【问题标题】:activerecord adding NULL as 'id' field?activerecord 添加 NULL 作为 'id' 字段?
【发布时间】:2012-12-07 07:05:31
【问题描述】:

我正在通过以下方式创建用户:

user = User.create attrs

基本上,它通过添加一个值为 NULL 的“id”字段搞砸了,我猜它的值为 0。所以在第一个用户之后,我得到一个错误,即 id 必须是唯一的。我可以确认 attrs 哈希不包含“id”字段。

这是生成的 SQL:

INSERT INTO `users` (`birthday`, `created_at`, `device_token`, `device_type`, `email`, `fb_id`, `first_name`, `gender`, `last_name`, `location`, `rstatus`, `updated_at`) VALUES ('1992-02-28 00:00:00', '2012-12-06 17:43:43', NULL, 'x86_64', 'adfas023@gmail.com', '12593646569', 'Test', 'male', 'Once', Test, 'Single', '2012-12-06 17:43:43')

发生了什么事?

谢谢

【问题讨论】:

  • 您的 'id' 字段应该由迁移创建为自动递增。您可以发布此表的初始 create_table 迁移吗?
  • 哇,你说得对。我没有使用迁移,我手动设置了数据库表,因为我在 Sinatra 上并且我没有 rake 任务
  • 所以手动修改id列为自增。
  • 是的,我做到了。您要发布答案以便我将其标记为正确吗?我知道这是愚蠢的错误,但它可能对其他人有帮助。

标签: ruby activerecord sinatra


【解决方案1】:

您的 id 列应该是自动递增的,并且您的迁移通常会确保这样做。如果您不能/不使用迁移,请手动修复它。

【讨论】:

    猜你喜欢
    • 2011-11-26
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2015-07-30
    • 2018-08-10
    • 2021-04-05
    相关资源
    最近更新 更多