2011-01-13 17 views
1

私はプログラムでユーザーを作成して、古いデータベースと同期するためのスクリプトを用意しています。それはしばらくの間、かなりうまくいきました。今すぐ突然それは、ユーザーを挿入しようとすると、重複キーエラーでエラーになりました。Drupal:キー2の重複エントリ ''クエリ:

Duplicate entry '[email protected]' for key 2 query: INSERT INTO users (name, mail, status, pass, created).....

と私はそこにクエリをしようとした場合、私は、MySQLのコンソールから直接このエラーを複製することができます正確なエラーです。だからこそ、この問題は奇妙になります。エントリ '[email protected]'はuserテーブルのどこにも存在しません。したがって、この電子メールアドレスを持つデータベースにレコードが存在しないので、重複したエントリエラーを生成する方法に困惑しています。ここ

は、ユーザー

mysql> INSERT INTO users (name, mail, status, pass, created) VALUES ('username', '[email protected]', 1, 'encryptedpassword', 1294946026);

ERROR 1062 (23000): Duplicate entry '[email protected]' for key 2

mysql> select * from users where mail='[email protected]';

Empty set (0.00 sec)

+0

は、任意の制約/トリガ/ ...バックグラウンドで何かをすることがありますか? – DrColossos

+0

テーブル定義を転記できますか? –

+0

そして使用されるMySQLのバージョンは?最近のバージョンで修正されたバグかもしれません。 –

答えて

0
  • エクスポートし、テーブルを保護し、それをローカルに作成し直して、もう一度挿入を試みるように変更されましたmysqlのconsole..sensitiveデータを直接コピー/ペーストです。
  • おそらくエンコードの問題がありますか?同じドメインのすべてのユーザーを検索して、類似したエントリがあるかどうかを確認してください。
  • Develモジュールのクエリテーブルを使用して、Drupal内で実際に何が起こっているかを確認します。
1

user_save機能を使用する必要があります。ニュースのユーザーのための例えば

$user = user_save(null, array('name' => 'the name' , 'mail' => 'the user mail')); 
関連する問題