如何在localhost(xampp)中打开/关闭mysql严格模式?

hujrc8aj  于 2021-06-21  发布在  Mysql
关注(0)|答案(11)|浏览(447)

我想知道如何在localhost(xampp)中检查mysql严格模式是开还是关。
如果打开,那么什么模式以及如何关闭。
如果关闭,那么如何打开。
我已经跟着了http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sql-模式满和https://mariadb.com/kb/en/mariadb/sql_mode/ 以及其他相关网站。但我的问题没有得到确切的答案。

ktecyv1j

ktecyv1j1#

用检查值

SELECT @@GLOBAL.sql_mode;

然后使用以下命令清除@@global.sql\u模式:

SET @@GLOBAL.sql_mode=''
gzjq41n4

gzjq41n42#

->strict\u trans\u tables负责设置mysql strict模式。
->要检查是否启用了严格模式,请运行以下sql:

SHOW VARIABLES LIKE 'sql_mode';

如果其中一个值是strict\u trans\u tables,则启用严格模式,否则不启用。在我的情况下

+--------------+------------------------------------------+ 
|Variable_name |Value                                     |
+--------------+------------------------------------------+
|sql_mode      |STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION|
+--------------+------------------------------------------+

因此,在我的例子中启用了严格模式,因为其中一个值是strict\u trans\u表。
->要禁用严格模式,请运行以下sql:

set global sql_mode='';

[或除严格转换表以外的任何模式。例如:set global sql_mode='no_engine_substitution';]
->要再次启用严格模式,请运行以下sql:

set global sql_mode='STRICT_TRANS_TABLES';
osh3o9ms

osh3o9ms3#

对于ubuntu:
一旦您通过ssh连接到vps,请尝试使用“root”连接到mysql
用户:mysql-u root-p
输入“root”用户密码,您将进入mysql环境(mysql>),然后只需检查什么是sql\u模式,使用以下命令:
显示变量,如'sql_mode';
基本上,如果表的值为 STRICT_TRANS_TABLES ,表示此选项已启用,因此需要使用以下命令从此表中删除值:

set global sql_mode='';

这会将表的值设置为空并禁用此设置。这样地:

+---------------+-------+
 | Variable_name | Value |
 +---------------+-------+
 | sql_mode      |       |
 +---------------+-------+

请确保在mysql环境中执行这些命令,而不是简单地通过ssh。我认为这一点在下面的文章中被遗漏了,作者认为读者是凭直觉理解的。

ijxebb2r

ijxebb2r4#

在服务器控制台上:

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

r1zhe5dt5#

我想知道如何在localhost(xampp)中检查mysql严格模式是开还是关。

SHOW VARIABLES LIKE 'sql_mode';

如果结果有“strict\u trans\u tables”,那么它是打开的。否则,它就关闭了。
如果打开,那么什么模式以及如何关闭。
如果关闭,那么如何打开。
对于windows,
C:\Program Files\MariaDB XX.X\data 打开 my.ini 文件。

  • 在“sql\u mode”行中,修改值以打开/关闭严格模式。

保存文件

**重新启动mysql服务

SHOW VARIABLES LIKE 'sql_mode' 再看看是否有效;

  • 3.a。要打开它,请添加 STRICT_TRANS_TABLES 在这条线上: sql_mode=STRICT_TRANS_TABLES . *如果已经有其他值,请在后面加一个逗号,然后与其余的值连接。
  • 3.b。要关闭它,只需删除 STRICT_TRANS_TABLES 来自价值*如果有逗号的话,也去掉它。
    **6. 要重新启动计算机上的mysql服务,

打开“运行命令”窗口(按windows+r按钮)。
类型 services.msc 点击 OK 右键单击名称 MySQL 点击 Restart

a14dhokn

a14dhokn6#

首先,使用以下命令检查mysql中是否启用了严格模式:

SHOW VARIABLES LIKE 'sql_mode';

如果要禁用它:

SET sql_mode = '';

也可以设置除以下以外的任何其他模式。要启用严格模式:

SET sql_mode = 'STRICT_TRANS_TABLES';

您可以检查第一个mysql查询的结果。

4ioopgfo

4ioopgfo7#

要在windows(10)中永久更改它,请编辑 my.ini 文件。要查找my.ini文件,请查看windows服务器中的路径。e、 g.对于我的MySQL5.7示例,服务是 MYSQL57 ,在此服务的属性中,可执行文件的路径为:
“c:\program files\mysql\mysql server 5.7\bin\mysqld.exe”--默认文件=“c:\programdata\mysql\mysql server 5.7\my.ini”mysql57
i、 e.编辑 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"

删除 STRICT_TRANS_TABLES, 在此sql模式行中,保存文件并重新启动mysql57服务。通过执行 SHOW VARIABLES LIKE 'sql_mode'; 在(新的)mysql命令行客户端窗口中。
(我发现web上的其他答案和文档很有用,但它们似乎都没有告诉您在windows中从何处找到my.ini文件。)

js5cn81o

js5cn81o8#

您可以使用以下方法检查它的局部值和全局值:

SELECT @@SQL_MODE, @@GLOBAL.SQL_MODE;
20jt8wwn

20jt8wwn9#

在Debian10上,我从 ./opt/lampp/xampp start 我愿意 strace ./opt/lampp/sbin/mysqld 看看我的.cnf在那里:

stat("/opt/lampp/etc/my.cnf", {st_mode=S_IFREG|0644, st_size=5050, ...}) = 0
openat(AT_FDCWD, "/opt/lampp/etc/my.cnf", O_RDONLY|O_CLOEXEC) = 3

因此,我将sql\u mode config添加到 /opt/lampp/etc/my.cnf 而不是 /etc/mysql/my.cnf

f8rj6qna

f8rj6qna10#

要在ubuntu中永久更改它,请执行以下操作
在ubuntu命令行中

sudo nano /etc/mysql/my.cnf

然后添加以下内容

[mysqld]
sql_mode=
lxkprmvk

lxkprmvk11#

就我而言,我需要补充:

sql_mode="STRICT_TRANS_TABLES"

低于 [mysqld] 在文件中 my.ini 位于 C:\xampp\mysql\bin .

相关问题