如何使用迁移创建postgres序列?
我创建了一个迁移文件,其执行如下:
execute 'CREATE SEQUENCE "ServiceAvailability_ID_seq";'
execute <<-SQL
ALTER TABLE "ServiceAvailability"
ALTER COLUMN "ID" set DEFAULT NEXTVAL("ServiceAvailability_ID_seq")
SQL
但是,当运行rake db:migrate时,我收到以下错误:
PGError:错误:列“ServiceAvailability_ID_seq”不存在 :ALTER TABLE“ServiceAvailability” ALTER COLUMN“ID”设置DEFAULT NEXTVAL(“ServiceAvailability_ID_seq”)
第二个问题,rake db:schema:dump用于创建一个可以对任何数据库进行移植的文件,但是,在调查模式时:转储它似乎只包含表,字段和字段类型信息并且未命中索引和序列?
答案 0 :(得分:1)
这有效
execute 'CREATE SEQUENCE ServiceAvailability_ID_seq;'
execute <<-SQL
ALTER TABLE "ServiceAvailability"
ALTER COLUMN "ID" set DEFAULT NEXTVAL('ServiceAvailability_ID_seq');
SQL
答案 1 :(得分:-4)
实际上你不应该使用这样的迁移,将来如果你将db更改为MySQL或任何其他db(支持rails),你将面临问题。请查看下面给出的链接上的Ruby on Rails指南。