欢迎关注我的公众号(只分享技术干货)
今天在Navicat上写了一个存储过程,然后运行执行都没有什么问题,可是部署执行的时候总是有问题。
后来在navicat上又仔细看了很久。还是没问题,执行了也没问题。
进linux mysql -uxxx -pxxx执行,还是报错:ERROR 1064 (42000): 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 ''
很奇怪的一个原因,为什么在mysql命令行执行会报错,而通过navicat软件就没问题了???????
后来突然看到之前有人写的存储过程,看到了一个delimiter // ,看到这个立刻明白怎么回事了。太粗心了。把这个常识给忘了。
写存储过程一定要delimiter 某个标记一下,不然默认情况下mysql遇到分号; 就认为是一个执行标记。
后来添加上delimiter // ,最后 使用//提交执行,最后在delimiter ;改成提交符号为分号;即可。
没想到navicat执行存储过程的时候,会默认就自动设置delimiter 为其他符号,修改了;为提交符号了。。。
好大的一个坑啊。
欢迎关注我的公众号(只分享技术干货)