0

我导出了一堆表并在它们前面加上“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. 因此,我尝试使用ALTER TABLE some_table AUTO_INCREMENT=10000. 还是一样的行为……

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

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

4

2 回答 2

0

因此,您的导入工作正常,只有在导入所有内容后尝试插入新记录时才会出现此错误?如果是这种情况,那么:

  1. 您的 auto_increment 设置不正确。
  2. 您正在为您的 auto_increment 字段指定一个值。

从上面的帖子中,您似乎正在为您的 auto_increment 字段指定一个值。您应该将您的 auto_increment 更新为表的 MAX+1,然后当您插入时,不要为该字段指定值,MySQL 将为您使用 auto_increment ...

于 2010-11-03T14:01:32.570 回答
0

学过的知识:

Drupal 不使用 MySQL 的 auto_increment 值。

正如我所知,自动增量不是 SQL Ansi 标准的一部分——它只是一件很常见的事情。Drupal 不想依赖不同 RDBMS 的某些实现,因此它们有一个表{sequences},其中有一个表名列和下一个 id 值,可以使用db_next_id($name)加载。当然,通过为表名添加前缀,我也必须在序列表中添加前缀。

尽管它一开始就让我发疯,但我认为这是 drupal 开发人员做出的明智决定。

于 2010-11-04T14:17:43.717 回答