将自动增量添加回 Rails 中的主键列
我错误地从表的 id 字段中删除了自动增量选项。 谁能告诉我如何通过迁移重新插入自动增量选项?
By mistake I removed the autoincrement option from id field of my table. Can anyone tell me how I can reinsert the option of autoincrement back through migration?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
尝试:
或者
某些 Rails 数据库适配器可能不允许您在主键上调用
change_column
。 如果是这种情况,那么您始终可以调用execute
直接使用 SQL 执行更改:MySQL:
PostgreSQL (方法 1):
PostgreSQL (方法 2):
如果您不想使用
bigint
/bigserial
(64 位),使用int(11)
/integer
/serial
反而。Try:
or
Certain Rails database adapters may not let you call
change_column
on the primary key. If that is the case then you can always callexecute
to perform the change using SQL directly:MySQL:
PostgreSQL (method 1):
PostgreSQL (method 2):
If you do not want to use
bigint
/bigserial
(64-bit), useint(11)
/integer
/serial
instead.我没有检查其他版本,但在 Rails 5 上你可以只设置
auto_increment
选项:或者如果你想要一个 bigint:
I didn't check other versions but on Rails 5 you can just set the
auto_increment
option:Or if you want a bigint:
您的Postgres代码不起作用,不可能在ALTER TABLE语句中使用serial或bigserial。 PostgreSQL 的正确 SQL 是
Your Postgres code does not work, it's impossible to use serial or bigserial in an ALTER TABLE statement. Correct SQL for PostgreSQL is
这对我有用,创建了一个主列并为所有行提供了 id。
This worked for me, created a primary column and gave ids to all the rows.
对于那些来到这里(像我一样)努力弄清楚如何制作使用
bigint
而不是int
的自定义id
列的人code>,我没有意识到的是,对于 Rails 5.1 及更高版本,bigint
是 idhttps://github.com/rails/rails/pull/26266
For those of you who came here (like I did) in an effort to figure out how to make a custom
id
column that usesbigint
instead ofint
, what I didn't realize is that for Rails 5.1 and above,bigint
is the default type for idhttps://github.com/rails/rails/pull/26266
更改列
Rails5
Rails6
添加列
导轨5
导轨6
Change Column
Rails5
Rails6
Add Column
Rails5
Rails6