mysql 修改sql_mode导致select字符串出现问题

今天执行mysql语句时,出现错误:

mysql> select * from saas_video_req_list where organization="RlokQwRlVjUrTUlkIqOg" limit 1;
ERROR 1054 (42S22): Unknown column 'RlokQwRlVjUrTUlkIqOg' in 'where clause'
在今天以前,在这个库中执行这个命令是可以的。

后来发现,有人在今天修改了mysql的model,

查看现在的mysql model发现:

mysql> select @@sql_mode;
+-------------------------------------------------------------+
| @@sql_mode                                                  |
+-------------------------------------------------------------+
| REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
 

今天以前的model应该是NO_ENGINE_SUBSTITUTION这个模式。

将模式设置回来

mysql> set sql_mode='NO_ENGINE_SUBSTITUTION';
Query OK, 0 rows affected (0.00 sec)
 

造成这个现象的原因:

使用ANSI模式,会对数据进行校验,导致双引号产生了错误,单引号是mysql的标准语法

ANSI:更改语法和行为,使其更符合标准SQL

 

 

 

 

你可能感兴趣的:(放学后)