我导出了一堆表,并以"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值重置为某个可笑的高数字。仍然是相同的行为…
有人知道这是怎么回事吗?
在…之前,我做过几次这个过程但如果不是这样的话。快把我逼疯了:/
发布于 2010-11-04 22:17:44
学到的教训:
Drupal不使用MySQL的auto_increment值。
据我所知,自动递增并不是SQL Ansi标准的一部分--它只是一件非常常见的事情。Drupal不希望依赖于不同RDBMS的一些实现,因此它们有一个表值,其中有一列表示表名和可以用db_next_id($name)加载的下一个id- {sequences}
。当然,通过为表名加上前缀,我还必须在sequences表中添加前缀。
尽管它一开始就让我抓狂,但我认为这是drupal开发人员做出的一个明智的决定。
发布于 2010-11-03 22:01:33
那么,您的导入工作正常,只有当您尝试在导入所有内容之后插入一个新记录时,才会出现此错误?如果是这样的话,或者:
从上面的帖子中可以看出,您正在为auto_increment字段指定一个值。您应该将auto_increment更新为表的MAX+1,然后在执行插入操作时,不要为该字段指定值,MySQL将为您使用auto_increment ...
https://stackoverflow.com/questions/4087687
复制相似问题