我已阅读了很多文章,讨论如何使用BIGINT
作为Rails中的主键,但似乎所有这些都已过时。Rails:如何使用BIGINT作为主键
如何将BIGINT用于我的主键,最好是通过全局设置。 (我知道在性能上的差异)
事情我已经尝试:
- http://www.mccartie.com/2016/12/05/rails-5.1.html
- https://moeffju.net/blog/bigints-in-rails-as-primary-keys
- 和很多我不记得
我已阅读了很多文章,讨论如何使用BIGINT
作为Rails中的主键,但似乎所有这些都已过时。Rails:如何使用BIGINT作为主键
如何将BIGINT用于我的主键,最好是通过全局设置。 (我知道在性能上的差异)
事情我已经尝试:
如果您的应用程序是本地建于rails '>= 5.1'
,你的主键应该已经BIGINT
。通过“本机构建”,我的意思是,您的迁移最初是在Rails版本上运行的(相对于在< 5.1中运行它们,之后再更新gem)
如果它们不是BIGINT
,则可以使用迁移操作在下面的源发现,粘贴在这里为了方便:
change_column :your_table_name, :id, :bigint
你有没有尝试这段代码在迁移文件中?
def change
create_table :table_name, id: false do |t|
t.bigint :id, null: false
t.index :id, name: "pk_table_name", unique: true
end
end
,并在型号:
class ModelName < ApplicationRecord
self.primary_key = :id
end
什么是“”pk_table_name“”?据我所知,'t.integer:id,limit:8'是Rails中BIGINT的正确表达式,还是Rails 5.1的东西? – jonhue
是的,你是对的:'t.integer:ID,限制:5,空:假的,选择:“主KEY'' 和''pk_table_name是索引名。 –
有没有尝试过任何的那些所谓过时的方法吗? –
[我应该关闭它作为重复?](http://stackoverflow.com/questions/28708868/rails-4-mysql-bigint-primary-key-issues-and-errors) –
我试过所有我发现 – jonhue