如何禁用MySQL严格模式

一些 内容 Typo、Contao、Contenido等管理系统都存在自的问题。 MySQL 5.1可用严格模式。这是自5.7版本以来的默认设置。

所以说,也可以使用这些CMS系统,在服务器端仍然可以关闭严格模式。当然,这只是有条件的推荐。

严格模式的作用是什么?

MySQL/MariaDB的严格模式控制了在数据更改查询中如何处理无效或缺失的值,包括INSERT、UPDATE和CREATE声明。

无效或缺失 数据 导致SQL查询执行时出现警告或错误。如果关闭Scrict模式,则会调整无效查询或缺失值,并发出简单的警告。这可能会导致意想不到的结果。

一个例子就是字符限制。如果关闭严格模式,多余的字符会被剪掉,使其适合。

为什么只有一些CMS系统才会出现这种情况?

只能猜测。可能是代码太多,没有人能够弄明白。关于 内容管理系统 工作的人很多,有时他们带来的个别功能,然后多年来不再看。只要不出现严重的问题就不会太差。

像whmcs这样的系统,也会受到影响,情况就完全不同了。如果重要数据被截断,就会出现错误的分配。这在结算时可能会出现问题。

这些说明可以应用在哪里?

该说明指的是Linux系统中的MySQL 5.6/5.7或。 MariaDB 10.1 和更高的,如果严格模式是活动的。

需要root权限才能进行更改。我们的说明总是提到 Centos Linux.在其他发行版中,配置文件可能位于其他目录中。

步骤1:创建备份

编辑文件时,一定要做好备份。无意中删除一些东西太容易了。

cp -a /etc/my.cnf{,.strict.bak}。

该命令从同一目录下的my.cnf中创建一个my.cnf.strict.bak文件。

第二步:禁用MySQL严格模式

文件中通常不包含sql_mode=...,所以应该在这一节中添加以下行数。 [mysqld] :

sql_mode=""

步骤3:重新启动MySQL服务

编辑文件后,必须重新启动服务才能应用更改。

systemctl restart mariadb

服务重启后,您可以通过执行以下命令检查设置。这里以密码为例 Plesk服务器.或者用root和密码。

mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e "SELECT @@sql_mode;"

然后应出现以下返回。

+————+

|@sql_mode

+————+

| |

+————+

当前文章