我导出了一堆桌子,并用“ CH_”将它们前缀并再次导入它们。所有使用PhpMyAdmin。一切都很好……直到我想创建一些东西。此消息失败:

user warning: Duplicate entry '4-4' for key 'PRIMARY' query: INSERT INTO ch_node (nid, vid, title, type, uid, status, created, changed, comment, promote, sticky) VALUES (4, 4, 'Nützliche Dokumente', 'page', 1, 1, 1288790996, 1288791130, 0, 0, 0) in /var/www/clients/client20/site60/docroot/includes/database.mysql.inc on line 172.

每次我尝试保存时,“ 4-4”的增量会增加。这让我认为数据库中的auto_increment值在某种程度上是错误的 - 尽管在我的 export.sql. 。因此,我试图使用Auto_increment值将Auto_increment值重置为一些可笑的高数字 ALTER TABLE some_table AUTO_INCREMENT=10000. 。仍然相同的行为…

有人知道这里发生了什么?

我之前几次做了这个程序……但是没有发生这种情况。这让我发疯:/

有帮助吗?

解决方案 2

学过的知识:

Drupal不使用MySQL的auto_increment值。

据我了解到,自动增量不是SQL ANSI标准的一部分 - 这只是非常普遍的事情。 Drupal不想依靠不同的RDBMS的某些实现,因此他们有一个表格 {sequences} 该列为表名和可以加载的下一个ID值的列 db_next_id($ name). 。当然,通过在表格名称之前,我也必须在序列表中添加前缀。

最初让我发疯了,我认为这是Drupal-Developers做出的明智决定。

其他提示

因此,您的导入效果很好,只有当您尝试在所有导入后插入新记录时,才会遇到此错误?如果是这样,则要么:

  1. 您的auto_increment无法正确设置。
  2. 您正在为您的自动插入字段指定值。

从上面的帖子看,您似乎正在为您的自动increment字段指定值。您应该将auto_increment更新为表的最大+1,然后当您插入时,请勿指定该字段的值,而MySQL将为您使用auto_increment ...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top