MySQL ALTER TABLE添加列:另一列的错误

时间:2016-10-19 13:53:22

标签: mysql

好的,我有people表并尝试使用下一个命令运行sql-script:

ALTER TABLE `people`
    ADD COLUMN `name_spelling`
    VARCHAR(255) NULL DEFAULT NULL
    AFTER `last_name`;

然后我会收到错误:

[22001][1292] Data truncation: Incorrect date value:
'0000-00-00' for column 'birth_date' at row 35

此行birth_dateNULL,但如果我尝试在此列和行设置2016-05-05之类的日期而不是设置NULL - 所有工作都是在此行更正,但在下一个null日期会收到错误。

此外,并非所有null日期值都会返回错误。

2 个答案:

答案 0 :(得分:1)

也许你的MySQL有一些选项,比如NO_ZERO_DATE SQL模式(我认为它不是唯一阻止发布日期的mysql配置)。这会阻止您使用0000-00-00作为值。在我之前发生了一个已经创建的表违反了这个条件。在更改值或禁用阻止您设置0个日期的内容之前,它将无法编辑。

供参考:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html

答案 1 :(得分:0)

我曾经遇到过这个问题,而我的解决方法是编辑mysql.cnf文件 替换:sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

与此: sql_mode ='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

注意,我删除了该选项中的No_ZERO。