我现在在为我的一个客户修改的web应用程序上遇到了同样的问题,该应用程序最初部署在Linux MySQL v5.0.83-log上。我运行的是Windows MySQL v5.1.41。即使尝试使用phpMyAdmin的最新版本来提取数据库,它也不会报告所讨论的文本列的默认值。然而,当我尝试在Windows上运行插入(在Linux部署上工作良好)时,我收到一个ABC列上没有默认值的错误。我尝试用明显的默认值在本地重新创建表(基于该列的唯一值的选择),最终收到了非常有用的BLOB/TEXT列不能有默认值。
// Store the current sql_mode
mysql_query("set @orig_mode = @@global.sql_mode");
// Set sql_mode to one that won't trigger errors...
mysql_query('set @@global.sql_mode = "MYSQL40"');
/**
* Do table creations here...
*/
// Change it back to original sql_mode
mysql_query('set @@global.sql_mode = @orig_mode');
create table my_text
(
abc text
);
delimiter //
create trigger mytext_trigger before insert on my_text
for each row
begin
if (NEW.abc is null ) then
set NEW.abc = 'default text';
end if;
end
//
delimiter ;