DB-Import(重复条目)后无法创建节点

时间:2010-11-03 13:51:27

标签: drupal drupal-5

我导出了一堆表并用“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'递增。这让我觉得DB中的auto_increment值在某种程度上是错误的 - 虽然它在我的export.sql中正确指定。因此,我尝试使用ALTER TABLE some_table AUTO_INCREMENT=10000将auto_increment值重置为一些荒谬的高数字。还是一样的行为......

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

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

2 个答案:

答案 0 :(得分:0)

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

  1. 您的auto_increment设置不正确。
  2. 您正在为auto_increment字段指定一个值。
  3. 从上面的帖子中,您看起来正在为auto_increment字段指定值。您应该将auto_increment更新为表格的MAX + 1,然后当您插入时,不要为该字段指定值,MySQL将为您使用auto_increment ...

答案 1 :(得分:0)

获得的经验:

Drupal不使用MySQL的auto_increment值。

由于我了解到自动增量不是SQL Ansi标准的一部分 - 它只是一个非常常见的事情。 Drupal不希望依赖于不同RDBMS的某些实现,因此它们有一个表{sequences},其中包含表名列和下一个可以使用db_next_id($name)加载的id-value。当然,通过为表名添加前缀,我也必须在序列表中添加前缀。

尽管它首先让我疯了,但我认为drupal开发者做出了明智的决定。