我正在从 XML 文件中读取数据。由于源代码错误,日期已经过了一天,所以在加载到数据库后,我使用此 SQL 语句来增加日期。
UPDATE 2011_electricity SET DATE = DATE_ADD( DATE, INTERVAL 1 DAY )
上周它运行良好,但现在我收到一个错误:
MySQL said:
#1062 - Duplicate entry '2011-07-20' for key 1
我在数据字段上有一个主键。这是数据库的样子:
date energy daynum
2011-06-29 0.05 4197
2011-07-19 0.20 4219
2011-07-20 17.07 4220
2011-07-21 11.56 4221
2011-07-22 18.18 4222
2011-07-23 24.92 4223
2011-07-24 10.56 4224
2011-07-25 12.68 4225
2011-07-26 10.06 4226
2011-07-27 19.72 4227
2011-07-28 19.02 4228
2011-07-29 17.92 4229
2011-07-30 14.49 4230
2011-07-31 10.84 4231
2011-08-01 13.38 4232
2011-08-02 14.86 4233
我在那里看不到任何重复项,所以不明白错误,是否有更好的方法来执行 mysql 代码以将日期递增 1?
最佳答案
这是一个关于 MySQL 的 UPDATE
如何工作的问题,如 p.cambell 解释的那样逐行。绕过这个问题的另一种方法是明确告诉引擎如何排序更新(另一个 MySQL 怪癖):
UPDATE 2011_electricity
SET DATE = DATE_ADD( DATE, INTERVAL 1 DAY )
ORDER BY DATE DESC
经验法则:如果您想增加 PK(或其他唯一键),请按降序排列。如果要减少 PK,请按升序排序。
关于尝试递增日期字段时,MySQL 出现重复输入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968247/