Mysql大家是用严格模式还是宽松模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql大家是用严格模式还是宽松模式相关的知识,希望对你有一定的参考价值。

mysql开启了严格模式从一定程序上来讲是对我们代码的一种测试,如果我们的开发环境没有开启严格模式在开发过程中也没有遇到错误,那么在上线或代码移植的时候将有可能出现不兼容的情况,因此在开发过程做最好开启MySQL的严格模式
1.可以通过执行SQL语句来开启,但是只对当前连接有效,下面是SQL语句:

代码如下:
set sql_mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";

2.通过修改MySQL的配置文件,在配置文件中查找sql-mode,将此行修改成为:

代码如下:
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
如果查找不到sql-mode=则在[mysqld]下加入即可,推荐第二种方法,可以一劳永逸。
参考技术A MySQL加入了服务,就用sudoservicemysqlstop没有有的话就sudo/etc/init.d/mysqlstop

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

【中文标题】如何查找和禁用 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大家是用严格模式还是宽松模式的主要内容,如果未能解决你的问题,请参考以下文章

HTML_严格模式与混杂模式

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

html的doctype作用?严格模式与混杂模式如何区分?它们有何意义

Doctype作用?严格模式与混杂模式如何区分?它们有何意义?

Doctype的作用以及严格模式和混杂模式的区别

如何理解DocType? 什么是严格模式与混杂模式?如何触发这两种模式?