【发布时间】:2018-02-04 21:56:01
【问题描述】:
我正在尝试插入,如果 id 已经存在,它会更新该行,但我似乎无法让它工作。
这是插入的精简版本,因为大约有 1400 行可以插入/更新。大多数情况下,该语句将充当多行UPDATE,它将每天通过 CRON 作业运行。它应该更新现有的行,但是如果我添加了新项目,则会将其插入到数据库中。
INSERT INTO `buoy_stations` (`id`, `coords`, `name`, `owner`, `pgm`, `met`, `currents`)
VALUES
('00922', Point(30,-90),'name 1','owner 1','pgm 1','y','y'),
('00923', Point(30,-90),'name 2','owner 2','pgm 2','y','y'),
('00924', Point(30,-90),'name 3','owner 3','pgm 3','y','y'),
('00925', Point(30,-90),'name 4','owner 4','pgm 4','y','y'),
('00926', Point(30,-90),'name 5','owner 5','pgm 5','y','y')
ON DUPLICATE KEY
UPDATE coords=coords, name=name, owner=owner, pgm=pgm, met=met, currents=currents;
我做错了什么,这不起作用?根据错误,它似乎必须在UPDATE 部分中。
#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 'pgm=pgm, met=met, currents=currents'
我已经阅读了docs,并查看了几个 StackOverflow 答案,但它们似乎反映了与声明相同的设置。
【问题讨论】:
-
我没有看到你更新任何东西?您只是添加已经存在的值吗?怎么会有这样的更新?这会导致问题吗?
-
您的主键或唯一键是什么?
-
从您的错误消息中,
owner=owner和pgm=pgm之间需要一个逗号。 -
name是保留关键字:dev.mysql.com/doc/refman/5.7/en/…。尝试在其周围添加'。 -
@Sablefoste 是的,这绝对是个问题,感谢它现在运行查询但不更新字段,我认为这可能会解决,因为我没有使用
values()
标签: mysql