mysql错误1064的可能原因是什么?

zd287kbt  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(532)

请帮忙。已经好几个小时了,我还是解决不了这个错误。
我的问题是这样的:

INSERT INTO image (document_id, image_dir, page_number) 
VALUES( '2018-002', 'D:\\DRS\\ARTICLES\\IMAGE\\', 1)
``` `document_id` 以及 `image_dir` varchar和 `page_number` 是int
错误消息是:
sql语法有错误;请查看与您的mysql服务器版本对应的手册,以获取在第1行“d:\drs\articles\image\,1)”附近使用的正确语法
我已经试过把`作为列名分隔符,但还是没有用。
monwx1rj

monwx1rj1#

我认为您将不得不双重转义\字符一为您的语言,然后第二为mysql。试着这样提问,

INSERT INTO image (document_id, image_dir, page_number) VALUES( '2018-002', 'D:\\\\DRS\\\\ARTICLES\\\\IMAGE\\\\', 1)

而不是,

INSERT INTO image (document_id, image_dir, page_number) VALUES( '2018-002', 'D:\\DRS\\ARTICLES\\IMAGE\\', 1)

这是解释。
从workbench插入时,

INSERT INTO image (document_id, image_dir, page_number) VALUES( '2018-002', 'D:\\DRS\\ARTICLES\\IMAGE\\', 1)

如果工作正常,则意味着在c代码中,您需要转义两个反斜杠(\),这将变成\\。
如果您只在c代码中编写此查询,

INSERT INTO image (document_id, image_dir, page_number) VALUES( '2018-002', 'D:\\DRS\\ARTICLES\\IMAGE\\', 1)

然后到mysql服务器的实际查询变成这样,

INSERT INTO image (document_id, image_dir, page_number) VALUES( '2018-002', 'D:\DRS\ARTICLES\IMAGE\', 1);

即使您尝试从workbench运行,这个查询也会失败。
总之,您需要用\\c而不是仅仅用\c#(或任何像java这样需要转义斜杠的语言)编写\\c,以使查询从代码中工作。

相关问题