我正在尝试调整我们从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我做错了什么?快把我逼疯了!
发布于 2017-10-02 07:21:14
根据手册的说法,TRADITIONAL包括其他几种模式:
传统 在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_USER和NO_ENGINE_SUBSTITUTION。 从MySQL 5.7.4到5.7.7,TRADITIONAL相当于STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_AUTO_CREATE_USER和NO_ENGINE_SUBSTITUTION。NO_ZERO_IN_DATE, NO_ZERO_DATE和ERROR_FOR_DIVISION_BY_ZERO模式没有命名,因为在这些版本中,它们的效果包含在严格SQL模式(STRICT_ALL_TABLES或STRICT_TRANS_TABLES)的效果中。因此,TRADITIONAL在所有MySQL 5.7版本中的效果都是相同的(与MySQL 5.6中的效果相同)。有关更多讨论,请参见MySQL 5.7中的SQL更改。
因此,对模式的扩展是预期的,您的两种模式对于MySQL 5.7.8+来说是等价的。实际上对sql模式设置进行了评估:例如,您可以看到最后的模式包括配置文件中定义的非默认ALLOW_INVALID_DATES。
https://stackoverflow.com/questions/46520733
复制相似问题