sql_mode没有更新,即使我已经在my.cnf中更改了它

时间:2017-10-02 06:56:01

标签: mysql

我试图调整我们从mySQL 5.5服务器迁移到5.7服务器的数据库。它抱怨日期为0000-00-00格式。我试图解决这个问题,但我无法解决错误。

my.cnf 中,我有:

sql_mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,TRADITIONAL,ALLOW_INVALID_DATES

我重启mySQL,然后在phpmyadmin中执行此操作:

SHOW VARIABLES LIKE 'sql_mode' 

但是它显示了一个完全错误/不同的列表!

sql_mode
STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我做错了什么?这让我疯了!

1 个答案:

答案 0 :(得分:2)

根据manualTRADITIONAL包含其他几种模式:

  

<强>传统

     

在MySQL 5.7.4之前,在MySQL 5.7.8及更高版本中,TRADITIONAL相当于STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTION

     

从MySQL 5.7.4到5.7.7,TRADITIONAL相当于STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_AUTO_CREATE_USERNO_ENGINE_SUBSTITUTIONNO_ZERO_IN_DATE, NO_ZERO_DATEERROR_FOR_DIVISION_BY_ZERO模式未命名,因为在这些版本中,它们的效果包含在严格SQL模式(STRICT_ALL_TABLESSTRICT_TRANS_TABLES)的效果中。因此,TRADITIONAL的效果在所有MySQL 5.7版本中都是相同的(和MySQL 5.6中的相同)。有关其他讨论,请参阅MySQL 5.7中的SQL模式更改。

因此预期模式的扩展,并且您的两种模式对于MySQL 5.7.8+是等效的。实际上评估了sql模式设置:你可以看到例如您的最终模式包括配置文件中定义的非默认ALLOW_INVALID_DATES