我这个批量替换某表字段内容的 SQL 语句有错吗...一直报错 1064

2020-08-15 15:34:51 +08:00
 daimaosix

数据库版本 MariaDB-10.4.10 ,刚在执行一个批量替换某表字段内容的语句,但检查和调整了很久始终报错 1064,麻烦 V 友给看一下到底是哪里错了...

update base_info set main_url = replace(main_url,'v02-vid.xxxx.com','v01-vid.xxxx.myxxxx.com');

报错如下

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'update base_info set main_url = replace(main_url,'v02-vid' at line 1
2303 次点击
所在节点    MySQL
14 条回复
wangsongyan
2020-08-15 15:41:50 +08:00
命令行执行,还是代码调用?
starwing
2020-08-15 15:55:26 +08:00
试试看是不是 main_url 这玩意儿不在表里,我拿了个错误的字段试了下报你的这个错。
daimaosix
2020-08-15 15:59:31 +08:00
@wangsongyan 直接命令行执行的
daimaosix
2020-08-15 16:00:01 +08:00
@starwing 在呢,我反复确认了好几遍,实在找不到问题了
hm20062006ok
2020-08-15 16:19:04 +08:00
加上 where 语句试试?可能是安全策略设置保守?
akira
2020-08-15 16:22:54 +08:00
命令行?库名错了吧
daimaosix
2020-08-15 16:30:13 +08:00
@hm20062006ok 没有做安全策略,这个就是一个普通的集群,没做太多策略,打算下个月换云数据库了
daimaosix
2020-08-15 16:32:09 +08:00
@akira 没错的,我进入那个库执行的,表和字段名都没错,就是不知道哪里错了,难受
goodboy95
2020-08-15 17:06:00 +08:00
错误位置在整个语句之前,这就有点怪异。
总感觉是哪里有问题,导致传给数据库的语句不止这么一句。
goodboy95
2020-08-15 17:07:02 +08:00
这语句是手打的吗?不是的话建议从头手打一遍,排除不可见符号导致的问题。
zhangysh1995
2020-08-15 17:12:53 +08:00
看起来没毛病,可以到 MariaDB 社区或者 MySQL Slack 问一下。觉得可能是 SQL Parser 有 bug 。。。
daimaosix
2020-08-15 17:15:12 +08:00
@goodboy95 我是先在 VScode 手动打的,确认 OK 了,复制到命令行执行的,我现在试试在命令行输入试试
laminux29
2020-08-15 18:48:15 +08:00
我最烦这种一行代码包含多个操作的做法,不易读,也不利于调试,而且,连自己也被坑了。
daimaosix
2020-08-15 21:05:55 +08:00
@laminux29 同感

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/698460

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX