代码之家  ›  专栏  ›  技术社区  ›  nocksock

数据库导入后无法创建节点(重复条目)

  •  0
  • nocksock  · 技术社区  · 14 年前

    我导出了一堆表,并在它们前面加上“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”在每次尝试保存时都会递增。这使我认为数据库中的自动增量值是错误的,尽管它在我的 export.sql ALTER TABLE some_table AUTO_INCREMENT=10000 . 同样的行为

    我以前做过几次这个手术,但没有发生这种情况。我快疯了:/

    2 回复  |  直到 14 年前
        1
  •  0
  •   Judas    14 年前

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

    1. 您的自动增量设置不正确。

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

        2
  •  0
  •   nocksock    14 年前

    经验教训:

    Drupal不使用MySQL的自动增量值。

    正如我所了解到的,auto increment不是SQL Ansi标准的一部分,它只是非常常见的事情。Drupal不希望依赖于不同RDBMS的一些实现,因此它们有一个表 {sequences} 它有一列用于表名和下一个id值,可以使用 db_next_id($name)

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