【问题标题】:duplicate entry at key primary mysql主键 mysql 上的重复条目
【发布时间】:2011-04-27 02:08:36
【问题描述】:

我的程序非常简单,它在一列中插入相同的值,并在另一列中更新时间戳和日期。它还有一个自动递增的 ID 列,用作表的主键。

+-------+------------+------+-----+-------------------+-----------------------------+
| Field | Type       | Null | Key | Default           | Extra                       |
+-------+------------+------+-----+-------------------+-----------------------------+
| id    | bigint(20) | NO   | PRI | NULL              | auto_increment              |
| Power | float      | YES  |     | NULL              |                             |
| dt    | timestamp  | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+------------+------+-----+-------------------+-----------------------------+

目前我被 id = 4000 Power = 40996dt = recent date time 困住了

当我尝试运行将数据插入表中的命令时,我收到一条错误消息

键“主要”的重复条目“4971”

检查表:

+----------------+-------+----------+-----------------------------------------------------------+
| Table          | Op    | Msg_type | Msg_text                                                  |
+----------------+-------+----------+-----------------------------------------------------------+
| newdb.newmeter | check | warning  | Table is marked as crashed                                |
| newdb.newmeter | check | warning  | 19 clients are using or haven't closed the table properly |
| newdb.newmeter | check | warning  | Size of datafile is: 68816       Should be: 68663         |
| newdb.newmeter | check | error    | Found 4048 keys of 4039                                   |
| newdb.newmeter | check | error    | Corrupt                                                   |
+----------------+-------+----------+-----------------------------------------------------------+

【问题讨论】:

  • 插入 newdb.newmeter (Power) 值 (40997);
  • @piotrm 插入 newdb.newmeter (Power) 值 (40997);
  • @piotrm 抱歉,但我没有卡在 id 列中的 4000 而是它的 4970,所以下一个是 4971,这就是我遇到错误的地方。
  • 您可以尝试检查您的表是否损坏 - CHECK TABLE newmeter;
  • @piotrm 感谢伙伴,我已经更新了我的帖子,答案看起来很糟糕。我该如何解决这个问题

标签: mysql duplicates


【解决方案1】:

备份您的数据。 如果你有能力关闭 mysqld,你应该这样做并使用myisamchk 来修复表。 如果这不是一个选项,请尝试执行 FLUSH TABLES;和修复表新表; 为您的表格中的数据不是很准确做好准备。

【讨论】:

  • 感谢 piotrm "repair table" 工作,现在我可以再次使用同一张表了。但我觉得这需要很长时间来构建一年中的数据库我敢肯定我可以在 excel 中做一些事情并将文件直接转储到 mysql,这样我就可以拥有带有日期时间戳的数据库一年。有什么建议吗?非常感谢您的帮助
  • 我建议不要使用 excel 或任何与 mysql 本身无关的东西。只需确保始终拥有您备份的表文件的副本,并使用 mysql 在线手册中的说明尝试不同的事情。 dev.mysql.com/doc/refman/5.6/en/myisam-repair.html
猜你喜欢
  • 2014-10-27
  • 2012-08-18
  • 2018-05-02
  • 1970-01-01
  • 2019-02-23
  • 2020-02-02
  • 2018-05-01
  • 2017-02-17
  • 1970-01-01
相关资源
最近更新 更多