我想知道如何在localhost(xampp)中检查MySQL严格模式是打开还是关闭。
如果在那时为什么模式和如何关闭。
如果关闭然后如何开启。
我已经关注了http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-mode-full和https://mariadb.com/kb/en/mariadb/sql_mode/以及其他相关网站。但我没有得到我的问题的确切答案。
- > STRICT_TRANS_TABLES负责设置MySQL严格模式。
- >检查是否启用了严格模式运行以下sql:
SHOW VARIABLES LIKE 'sql_mode';
如果其中一个值是STRICT_TRANS_TABLES,则启用严格模式,否则不启用。在我的情况下它给了
+--------------+------------------------------------------+
|Variable_name |Value |
+--------------+------------------------------------------+
|sql_mode |STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION|
+--------------+------------------------------------------+
因此在我的情况下启用严格模式,因为其中一个值是STRICT_TRANS_TABLES。
- >要禁用严格模式运行以下sql:
set global sql_mode='';
[或除STRICT_TRANS_TABLES之外的任何模式。例如:设置全局sql_mode ='NO_ENGINE_SUBSTITUTION';]
- >再次启用严格模式运行下面的sql:
set global sql_mode='STRICT_TRANS_TABLES';
要在ubuntu中永久更改它,请执行以下操作
在ubuntu命令行中
sudo nano /etc/mysql/my.cnf
然后添加以下内容
[mysqld]
sql_mode=
首先,使用以下命令检查mysql中是否启用了严格模式:
SHOW VARIABLES LIKE 'sql_mode';
如果要禁用它:
SET sql_mode = '';
或以下任何其他模式可以设置。要启用严格模式:
SET sql_mode = 'STRICT_TRANS_TABLES';
您可以从第一个mysql查询中检查结果。
您可以使用以下方法检查它的本地和全局值:
SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
检查值
SELECT @@GLOBAL.sql_mode;
然后使用此命令从值中删除'STRICT_TRANS_TABLES':
SET @@GLOBAL.sql_mode=''
要在Windows(10)中永久更改它,请编辑my.ini
文件。要查找my.ini文件,请查看Windows服务器中的路径。例如。对于我的MySQL 5.7实例,该服务是MYSQL57
,在此服务的属性中,可执行文件的路径是:
“C:\ Program Files \ MySQL \ MySQL Server 5.7 \ bin \ mysqld.exe”--defaults-file =“C:\ ProgramData \ MySQL \ MySQL Server 5.7 \ my.ini”MySQL57
即编辑my.ini
中的C:\ProgramData\MySQL\MySQL Server 5.7\
文件。请注意,C:\ProgramData\
是Windows(10)中的隐藏文件夹。我的文件包含以下几行:
# Set the SQL mode to strict
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
从此sql模式行中删除STRICT_TRANS_TABLES,
,保存文件并重新启动MYSQL57服务。通过在(新)MySQL命令行客户端窗口中执行SHOW VARIABLES LIKE 'sql_mode';
来验证结果。
(我发现网上的其他答案和文档很有用,但它们似乎都没有告诉你在Windows中哪里可以找到my.ini文件。)