2

如何使用迁移来创建 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 旨在创建一个可移植用于任何数据库的文件,但是,在调查 schema:dump 时,它似乎只包含表、字段和字段类型信息,并遗漏了索引和序列?

4

2 回答 2

1

这有效

    execute 'CREATE SEQUENCE ServiceAvailability_ID_seq;'
execute <<-SQL
  ALTER TABLE "ServiceAvailability" 
    ALTER COLUMN "ID" set DEFAULT NEXTVAL('ServiceAvailability_ID_seq');
SQL
于 2010-02-15T19:40:49.830 回答
-4

实际上,您不应该使用这样的迁移,将来如果您将数据库更改为 MySQL 或任何其他数据库(支持 Rails),您将面临问题。请查看下面给出的链接上的 Ruby on Rails 指南。

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

于 2010-05-19T14:20:40.263 回答