【发布时间】:2011-05-17 16:45:02
【问题描述】:
我有一个旧应用程序在从 MySQL 5.0 升级到 5.1 后开始失败。
一些研究表明这是由于“严格模式”防止插入某些类型的“无效”值,这些值以前只是自动转换为合理的值。
我尝试了SET @@SESSION.sql_mode = '' 和SET @@GLOBAL.sql_mode = '',但仍然出现错误。
还尝试在my.ini 中注释掉sql_mode。
是否有更强大的“核”选项来解决此问题?
【问题讨论】:
-
那些 合理的 替换包括日期为 '0000-00-00'、外键为
0、ENUM 字段中的空字符串......根据我的经验,这往往使一切复杂化,因为像WHERE start_date IS NULL这样的东西不能按预期工作,你必须求助于WHERE start_date IS NULL OR start_date='0000-00-00'。您应该使用适当的 SQL 模式修补您的生产环境,但还要在您的开发框中强制执行严格模式并尝试修复应用程序。