水线将现有数据库迁移到水线模型,无风帆

Error (E_UNKNOWN) :: Encountered an unexpected error : Trying to define a collection (external_resource) which already exists. 

我正在尝试为现有的数据库创build一个模型。 我不使用风帆。 只是水线独立。我有连接设置迁移安全。 但是,waterline仍在尝试创build一个已存在于我的预先存在的数据库中的表。 如果我让tableName成为一个新的名字,它可以正常工作。 这个问题似乎是当我尝试使用现有表中的现有数据,然后创build一个水线模型。

我相信这是一个错误,因为迁移安全永远不应该试图创build一个表呢?

我正在使用没有风帆的水线。

水线configuration如下:

 ``` models = []; fs.readdirSync(HOMEDIR + '/lib/models/waterline').forEach(function(file) { models.push(require(HOMEDIR + '/lib/models/waterline/' + file)); }); module.exports = { init: function(next) { models.forEach(function(model) { orm.loadCollection(model); }); orm.initialize(config, function(err, models) { if (err) throw err; global.models = models.collections; global.connections = models.connections; next(); }); } }; //And this in my config localhost: { migrate: 'safe', adapter: 'postgres', database: 'intellinote', host: 'localhost', user: 'postgres', password: '', port: 5432 } ``` 

顺便使用sails-postgresql。 “sails-postgresql”:“^ 0.11.4”,

我有一个假设是我的模型定义完全不符合我的postgresql模型。 我试图做到这一点,但也许我错过了一些小东西。 在水线代码中,它检查模型==模式定义? 也许如果我知道这一点,我可以find为什么这是试图创造

航行用户3年。 主要生产水平在数十亿公司:(

提前致谢

更多信息:SQL看起来像这样的表

 ``` DROP TABLE IF EXISTS "intellinotedb"."external_resource"; CREATE TABLE "intellinotedb"."external_resource" ( "id" int8 NOT NULL DEFAULT nextval('external_resource_id_seq'::regclass), "external_id" varchar(2000) NOT NULL COLLATE "default", "version_id" varchar(2000) COLLATE "default", "url" varchar(5000) COLLATE "default", "name" varchar(4000) COLLATE "default", "size" int8, "creator" varchar(50) NOT NULL COLLATE "default", "created_at" timestamp(6) NOT NULL DEFAULT now(), "modified_at" timestamp(6) NULL, "project_id" int8 NOT NULL, "note_id" int8, "type" varchar(50) NOT NULL COLLATE "default", "is_public" bool NOT NULL DEFAULT false, "state" varchar(100) NOT NULL DEFAULT 'ACTIVE'::character varying COLLATE "default", "mime_type" text COLLATE "default", "internal_type" text COLLATE "default", "is_template" bool NOT NULL, "has_filled_data" bool NOT NULL ) WITH (OIDS=FALSE); ALTER TABLE "intellinotedb"."external_resource" OWNER TO "intellinote"; -- ---------------------------- -- Primary key structure for table external_resource -- ---------------------------- ALTER TABLE "intellinotedb"."external_resource" ADD PRIMARY KEY ("id") NOT DEFERRABLE INITIALLY IMMEDIATE; -- ---------------------------- -- Uniques structure for table external_resource -- ---------------------------- ALTER TABLE "intellinotedb"."external_resource" ADD CONSTRAINT "external_resource_note_id_key" UNIQUE ("note_id") NOT DEFERRABLE INITIALLY IMMEDIATE; -- ---------------------------- -- Foreign keys structure for table external_resource -- ---------------------------- ALTER TABLE "intellinotedb"."external_resource" ADD CONSTRAINT "external_resource_note_id_fkey" FOREIGN KEY ("note_id") REFERENCES "intellinotedb"."note" ("id") ON UPDATE NO ACTION ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; ALTER TABLE "intellinotedb"."external_resource" ADD CONSTRAINT "external_resource_project_id_fkey" FOREIGN KEY ("project_id") REFERENCES "intellinotedb"."project" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE; ``` 

和我的模型:

 ``` Waterline = require('waterline'); module.exports = Waterline.Collection.extend({ tableName: 'external_resource', meta: { schemaName: process.env.WATERLINE_SCHEMA || 'intellinotedb' }, connection: process.env.WATERLINE_DB || 'localhost', attributes: { id: { type: 'integer', autoIncrement: true, primaryKey: true, unique: true, size: 8 }, external_id: { type: 'string', required: true, size: 2000 }, version_id: { type: 'string', size: 2000 }, url: { type: 'string', required: true, size: 5000 }, name: { type: 'string', required: true, size: 4000 }, size: { type: 'integer', required: true, size: 8 }, creator: { type: 'string', required: true, size: 50 }, createdAt: { type: 'datetime', columnName: 'created_at' }, updatedAt: { type: 'datetime', columnName: 'modified_at' }, project_id: { type: 'integer', required: true }, note_id: { type: 'integer', required: true, size: 8 }, type: { type: 'string', defaultsTo: 'FILE', required: true, size: 50 }, is_public: { type: 'boolean', defaultsTo: true, required: true }, state: { type: 'string', enum: ['ACTIVE', 'DELETED'], defaultsTo: 'ACTIVE', required: true, size: 100 }, mime_type: { type: 'string', required: true }, internal_type: { type: 'string', defaultsTo: 'REGULAR', required: true }, is_template: { type: 'boolean', defaultsTo: false, required: false }, has_filled_data: { type: 'boolean', defaultsTo: false, required: false } } }); ``` 

迁移function需要在每个模型上,而不是在连接上。 按照这个线程: https : //github.com/balderdashy/waterline/issues/1472