Code Bye

mysql插入时遇到一个很奇怪的问题

多方定位之后发现问题如下
insert into `ggg`(`name`) values
(“aa
— aa
aa”),
(“bb;bb”);
上面这行语句会报错   1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near “”bb” at line 3

删除 bb后面的分号  “;”    就好了。
这条执行成功
insert into `ggg`(`name`) values
(“aa
— aa
aa”),
(“bbbb”);
删除   “–”  也执行成功
insert into `ggg`(`name`) values
(“aa
aa
aa”),
(“bb;bb”);
何解。
解决方案

20

同样语句可以直接在MYSQL的命令行工具中测试,没有问题,则说明navicat 有什么问题。

20

最好是在mysql命令行里执行下

20

引用 2 楼 jijiqw 的回复:
Quote: 引用 1 楼 yupeigu 的回复:

你是在哪儿执行的?
本人执行了没有报错。

用navicat 执行查询的  ,不知道是navicat的问题 还是mysql版本的问题

本人试了一下,也报错了:
[SQL]insert into `tb2`(`name`) values
(“aa
— aa
aa”),
(“bb;
[Err] 1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near “”bb” at line 3

所以应该是navicat的问题导致的,每个客户端工具都会对你编写的sql进行处理,前期的处理、规范、语法检查、语义检查等。
而本人用mysql命令行登录执行没有报错,说明mysql在这方面对你写的sql编写限制更少,所以才不报错的。

20

引用 7 楼 jijiqw 的回复:
Quote: 引用 4 楼 u011575570 的回复:

最好是在mysql命令行里执行下

试过还是不行。    牵扯到能否有换行的问题

在窗口换行是相当于新的开始吧,所以会报错。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明mysql插入时遇到一个很奇怪的问题