DB-Import(複製エントリ)の後にノードを作成できません
質問
たくさんのテーブルをエクスポートし、それらに「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
. 。したがって、私はAuto_increment値をいくつかのばかげた高い数にリセットしようとしました ALTER TABLE some_table AUTO_INCREMENT=10000
. 。まだ同じ行動…
ここで何が起こっているのかアイデアはありますか?
私はこの手順を数回前にしましたが、これが起こることなく。それは私を駆り立てています:/
解決 2
学んだ教訓:
DrupalはMySQLのAuto_increment値を使用しません。
自動増加がSQL ANSI標準の一部ではないことを学んだので、それは非常に一般的なことです。 Drupalは異なるRDBMのいくつかの実装に頼りたくないので、彼らはテーブルを持っています {sequences}
これには、テーブル名の列があり、ロードできる次のID値があります db_next_id($ name). 。もちろん、テーブル名をプレフィックスすることで、シーケンステーブルにプレフィックスも追加する必要がありました。
そもそも私に夢中になったのと同じように、それはDrupal Developersが行った賢明な決断だと思います。
他のヒント
だから、あなたのインポートは正常に機能します、それはあなたがこのエラーを取得するすべてのインポートされた後に新しいレコードを挿入しようとするときだけですか?その場合は、次のとおりです。
- Auto_incrementは正しく設定されていません。
- Auto_incrementフィールドの値を指定しています。
上記の投稿から、Auto_incrementフィールドの値を指定しているようです。 Auto_incrementをテーブルの最大+1に更新する必要があります。その後、挿入すると、そのフィールドの値を指定しないでください。MySQLはauto_incrementを使用します...