我导出了一堆表并用“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值重置为一些荒谬的高数字。还是一样的行为......
有人知道这里发生了什么吗?
之前我做了几次这个程序......但没有发生这种情况。这让我疯狂:/
答案 0 :(得分:0)
因此,您的导入工作正常,只有当您尝试在导入所有内容后插入新记录时才会出现此错误?如果是这种情况,那么:
从上面的帖子中,您看起来正在为auto_increment字段指定值。您应该将auto_increment更新为表格的MAX + 1,然后当您插入时,不要为该字段指定值,MySQL将为您使用auto_increment ...
答案 1 :(得分:0)
获得的经验:
由于我了解到自动增量不是SQL Ansi标准的一部分 - 它只是一个非常常见的事情。 Drupal不希望依赖于不同RDBMS的某些实现,因此它们有一个表{sequences}
,其中包含表名列和下一个可以使用db_next_id($name)加载的id-value。当然,通过为表名添加前缀,我也必须在序列表中添加前缀。
尽管它首先让我疯了,但我认为drupal开发者做出了明智的决定。