如何使用迁移创建postgres序列?如何使用迁移创建postgres序列?
我创建了一个迁移文件,下面执行:
execute 'CREATE SEQUENCE "ServiceAvailability_ID_seq";'
execute <<-SQL
ALTER TABLE "ServiceAvailability"
ALTER COLUMN "ID" set DEFAULT NEXTVAL("ServiceAvailability_ID_seq")
SQL
但是,运行耙分贝时:迁移,我发现了以下错误:
PGError: ERROR: column "ServiceAvailability_ID_seq" does not exist : ALTER TABLE "ServiceAvailability" ALTER COLUMN "ID" set DEFAULT NEXTVAL("ServiceAvailability_ID_seq")
第二个问题,耙分贝:schema:dump是为了创建一个可以用于任何数据库的文件,然而,在调查一个模式时:转储它似乎只包含表,字段和字段类型信息,并且遗漏了索引和序列?
为什么你要手动创建序列呢?当rails创建'id'列时,它将其输入为'serial',这会创建一个隐式序列。而轨应该读索引就好了。 – ryeguy 2010-05-19 14:26:00
没有rails不会将id列键入为串行,而是以整数形式应用序列。 [Postgresql官方] [1] doc解释说它是一样的。例如:* CREATE TABLE nom_de_table( nom_de_colonne SERIAL * );与* CREATE SEQUENCE nom_de_table_nom_de_colonne_seq相同; CREATE TABLE nom_de_table( nom_de_colonne integer NOT NULL DEFAULT nextval('nom_de_table_nom_de_colonne_seq')NOT NULL ); ALTER SEQUENCE nom_de_table_nom_de_colonne_seq OWNED BY nom_de_table.nom_de_colonne; * [1]:http://docs.postgresqlfr.org/9.1/datatype.html#datatype-numeric – Douglas 2012-12-20 11:38:20