如何查找和禁用 MySQL 严格模式?

Posted

技术标签:

【中文标题】如何查找和禁用 MySQL 严格模式?【英文标题】:How to find and disable MySQL strict mode? 【发布时间】:2016-10-24 04:14:25 【问题描述】:

大家好,我想为 whmcs 找到这个 mysql 严格模式并禁用它,但我没有进展 我是新手,如果我不提其他事情,那就不好意思了 谁能帮我? 我正在开发 WHM/Cpanel

【问题讨论】:

【参考方案1】:

我认为在最近的版本中更改 *.cnf 文件是不可能的 相反,您可以更改 mysql.service 文件

/lib/systemd/system/mysql.service
ExecStart=/usr/sbin/mysqld --sql-mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

【讨论】:

【参考方案2】:

首先,使用以下命令验证 MYSQL 正在运行的模式:

 mysql -u root -p -e "SHOW VARIABLES LIKE 'sql_mode';"

您需要将 root 替换为在您的服务器上具有超级用户权限的任何用户名(但通常只是 root)。系统还会提示您输入密码。

通过 SQL 命令行禁用严格模式:

您可以通过在命令行上运行以下命令来禁用 MySQL 服务器上的严格模式:

mysql -u root -p -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';"

【讨论】:

mysql 重启后会重置【参考方案3】:

我目前使用 MariaDB 和多 cpanel 配置运行 Centos 6.9 服务器,因此对于客户端,他们无法自行禁用严格,而不会出现缺少权限错误。这是您全局禁用它的方式:

打开 SSH/Console 并验证当前模式:

# mysql -e "SELECT @@sql_mode;"

+----------------------------------------------------------------------+
| @@sql_mode                                                           |
+----------------------------------------------------------------------+
|STRICT_TRANS_TABLES, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, |
|NO_ENGINE_SUBSTITUTION                                                |
+----------------------------------------------------------------------+

找到并编辑“my.cnf”文件

vim /etc/my.cnf

查找并更改以下内容或添加该行(如果不存在)

严格模式启用

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

严格模式禁用

sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

重启 MySQL 服务

/etc/init.d/mysql restart

验证严格模式已被禁用:

# mysql -e "SELECT @@sql_mode;"

+--------------------------------------------+
| @@sql_mode                                 |
+--------------------------------------------+
| NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+--------------------------------------------+

完成:)

【讨论】:

【参考方案4】:

从 cpanel 关闭(或打开)mysql 严格访问。

1、搜索“phpmyadmin”,在搜索框中点击

2,一旦加载了 phpmyadmin,点击“变量”选项卡

3、搜索“sql模式”

然后

进入时开启严格模式

STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

要关闭严格模式,请输入

NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

如果您可以控制要使用的脚本,那么最好打开严格模式,它会在代码中的任何错误成为问题之前提醒您。

【讨论】:

在 cpanel 中,一天后,将返回更改并自动再次设置为默认值,所以我认为最好将 sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 放入 /etc/my.cnf 文件中作为这个答案:***.com/a/47416442/1407491 【参考方案5】:

打开my-default.ini 文件并从sql_mode 值中删除STRICT_TRANS_TABLES 参数。

[例如:在 localhost xampp 中,文件位于 xampp/mysql/my-default.ini]

sql_mode的默认值如下

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

改成

 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

这将禁用 MYSQL 中的严格模式

【讨论】:

sry 我找不到 my.ini 它在哪里?你能帮我吗? 可以有my-default.ini 或以.ini 结尾的不同文件。在MYSQL安装目录中 对不起,这里有超过100个ini文件 这真的让我很紧张。我只有 Cpanel 访问权限。我怎么能找到那个? 我从来没有在 CPanel/whms 上工作过。如果您可以访问 mysql 安装,您可以通过我提到的步骤轻松更改它。【参考方案6】:

首先,要禁用 MySQL 严格模式,您需要服务器的 root 访问权限。如果你没有它,你就做不到。如果您只有 cPanel 访问权限,这意味着您不是此服务器的管理员,或者您没有 root 访问权限。

要编辑你的 mysql 配置文件 my.cnf,你必须通过 SSH(使用 root 用户或 sudo 访问)访问你的服务器,然后编辑 /etc/my.cnf 文件并添加以下行(如果它不存在):

[mysqld]

sql_mode="TRADITIONAL,NO_AUTO_CREATE_USER"

编辑此文件后,保存并重启mysql服务。同样,您需要对您的服务器具有完全的 root 访问权限才能更改此设置。

【讨论】:

以上是关于如何查找和禁用 MySQL 严格模式?的主要内容,如果未能解决你的问题,请参考以下文章

text mysql禁用严格模式

如何开启MYSQL的严格模式

如何在使用 webpack 捆绑 React 时禁用严格模式

将默认值添加到MySQL严格模式的每一列

如何在 Rails 中关闭 MySQL 严格模式

js中的严格模式和非严格模式的比较