【问题标题】:Drupal: Duplicate entry '' for key 2 query:Drupal:键 2 查询的重复条目“”:
【发布时间】:2011-01-13 21:35:28
【问题描述】:

我有一个脚本以编程方式即时创建用户以与旧数据库同步。一段时间以来,它一直很顺利。现在突然间它在尝试插入用户时开始出现重复键错误。确切的错误是:

Duplicate entry 'user@email.com' for key 2 query: INSERT INTO users (name, mail, status, pass, created).....

如果我在那里尝试查询,我可以直接从 mysql 控制台复制此错误。所以这就是问题变得奇怪的地方。用户表中的任何地方都不存在条目“user@email.com”。因此,我对它如何生成重复输入错误感到困惑,因为数据库中没有使用此电子邮件地址的记录。

这里是mysql控制台的直接复制/粘贴..敏感数据已更改以保护用户

mysql> INSERT INTO users (name, mail, status, pass, created) VALUES ('username', 'user@email.com', 1, 'encryptedpassword', 1294946026);

错误 1062 (23000):密钥 2 的重复条目“user@email.com”

mysql> select * from users where mail='user@email.com';

空集(0.00 秒)

【问题讨论】:

  • 是否有任何约束/触发器/...可以在后台执行某些操作?
  • 你能发布表定义吗?
  • 以及使用的 MySQL 版本?这可能是最近版本中修复的错误。

标签: mysql sql drupal insert mysql-error-1062


【解决方案1】:

您必须使用user_save 函数。

例如对于新闻用户:

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

【讨论】:

    【解决方案2】:
    • 导出表并在本地重新创建,然后再次尝试插入。
    • 可能存在编码问题?尝试搜索具有相同域的所有用户,看看是否有类似的条目。
    • 使用 Devel 模块的查询表也可以查看 Drupal 中实际发生的情况。

    【讨论】:

      猜你喜欢
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 2013-08-07
      • 2011-07-13
      • 2016-09-06
      • 1970-01-01
      相关资源
      最近更新 更多