如何使用迁移创建postgres序列?

时间:2010-02-15 18:02:17

标签: ruby-on-rails heroku

如何使用迁移创建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用于创建一个可以对任何数据库进行移植的文件,但是,在调查模式时:转储它似乎只包含表,字段和字段类型信息并且未命中索引和序列?

2 个答案:

答案 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指南。

http://guides.rubyonrails.org/migrations.html