mysql show variables sql_mode_关于mysql:sql_mode无法更新,即使我在my.cnf中进行了更改...

我正在尝试调整从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

我究竟做错了什么? 这真让我发疯!

也许是my.cnf错误?执行升级脚本?我更喜欢MySQL Workbench,而不是phpMyAdmin。 stackoverflow.com/questions/35565128/

@BitAccesser mmm我很我将VestaCP用于控制系统,并且在在线工具中显示为etcmysqlmy.cnf(我自己手动对其进行编辑,并且在线工具也显示了我的更改。很奇怪:/

您谈论phpMyAdmin!控制台上显示什么?

@BitAccesser我只想说的是,我使用VestaCP来管理服务器(类似于CPanel的位),并且从该面板中我可以看到my.cnf的位置是/etc/mysql/my.cnf,这是我正在编辑的位置。

OK,以为是MySQL工具。文件系统中的my.cnf文件没有任何意义。重要的是使用的my.cnf文件。您应该在phpMyAdmin中找到该路径。

@BitAccesser不只是WHM GUI。看起来Solarflare陷入了困境。我在SHOW VARIABLES LIKE sql_mode上看到的实际上是计算值。因为我将TRADITIONAL作为变量的一部分,所以导致添加了其他几个变量(STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER),这就是问题所在。现在一切都很好:)不过,谢谢您的报价!

根据手册,TRADITIONAL包括其他几种模式:

TRADITIONAL

Before MySQL 5.7.4, and in MySQL 5.7.8 and later, TRADITIONAL is equivalent to STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION.

From MySQL 5.7.4 though 5.7.7, TRADITIONAL is equivalent to STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION. The NO_ZERO_IN_DATE, NO_ZERO_DATE, and ERROR_FOR_DIVISION_BY_ZERO modes are not named because in those versions their effects are included in the effects of strict SQL mode (STRICT_ALL_TABLES or STRICT_TRANS_TABLES). Thus, the effects of TRADITIONAL are the same in all MySQL 5.7 versions (and the same as in MySQL 5.6). For additional discussion, see SQL Mode Changes in MySQL 5.7.

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

嗯,这很有趣! 果然,删除TRADITIONAL,重新启动mysql,然后在phpmyadmin中查看sql_mode会显示:`ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREAT E_USER,NO_ENGINE_SUB STITUTION',现在,它使我可以按预期更新数据库! :) 谢谢!

地球上的两个人更聪明(总有一天我也必须升级!):-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值