2011-01-13 51 views
1

我有一個腳本,編程方式創建用戶即時與舊數據庫同步。一段時間以來它一直很好。現在突然間,當嘗試插入用戶時,它開始出現重複鍵錯誤。確切的錯誤是:Drupal:重複條目''的關鍵2查詢:

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

我可以,如果我嘗試查詢有從mysql控制檯直接複製此錯誤。所以這就是問題變得怪異的地方。條目'[email protected]'不存在於用戶表中的任何地方。因此,我很困惑它是如何產生一個重複的輸入錯誤,因爲數據庫中沒有這個電子郵件地址的記錄。

這裏是MySQL console..sensitive數據直接拷貝/粘貼已更改爲保護用戶

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 2011-01-13 22:15:06

回答

0
  • 導出表並在本地重新創建並再次嘗試插入。
  • 也許有一個編碼問題?嘗試搜索具有相同域的所有用戶,看看是否有類似的條目。
  • 使用Devel模塊的查詢表來查看Drupal中實際發生的情況。
1

您必須使用user_save函數。

例如,對於新聞的用戶:

$user = user_save(null, array('name' => 'the name' , 'mail' => 'the user mail'));