我已将我们的服务器升级到包含 Mysql 5.7 的 Ubuntu 16,并且默认情况下启用了严格模式(尽管在任何配置文件中都没有针对它的条目)。
我们在导入在 mysql 5.6 及更早版本下生产的数据库时遇到问题,这是因为严格模式。默认情况下,这里是启用的:
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
如何将 mysql 5.7 配置为与 5.6 完全一样工作,或者使 5.6 中的数据库与 5.7 兼容?
Bil*_*lal 36
要禁用严格的 SQL 模式,请使用 SSH 连接到您的服务器root
并创建此文件:
/etc/mysql/conf.d/disable_strict_mode.cnf
Run Code Online (Sandbox Code Playgroud)
打开文件并输入以下两行:
[mysqld]
sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Run Code Online (Sandbox Code Playgroud)
使用以下命令重新启动 MySQL:
sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)
此更改禁用了 MySQL 5.7 中添加的两个 SQL 模式设置STRICT_TRANS_TABLES
和ONLY_FULL_GROUP_BY
,并导致一些较旧的应用程序出现问题。
您可以通过以下方式运行此命令来确认已禁用严格 SQL 模式root
:
sudo mysql -i -BN -e 'SELECT @@sql_mode' | grep -E 'ONLY_FULL_GROUP_BY|STRICT_TRANS_TABLES'
Run Code Online (Sandbox Code Playgroud)
如果禁用了严格模式,您将看不到该命令的任何输出。
如果禁用严格模式会给您带来任何问题,您可以通过删除该文件并再次重新启动 MySQL 来再次启用它。
来源:如何在 MySQL 5.7 中禁用严格的 SQL 模式
归档时间: |
|
查看次数: |
26240 次 |
最近记录: |