【发布时间】:2015-10-29 15:32:47
【问题描述】:
我正在使用 express.js 和 Sequilize 与 Postgres DB 构建 Web 服务。
数据库在模式“schema1”下保存一个表“国家”。表 'country' 包含字段 'name'、'isoCode'。
创建了一个种子文件以在表“国家”中插入国家列表。
种子文件看起来像:
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.bulkInsert(
'country',
[
{
"name":"Afghanistan",
"isoCode":"AF"
},
{
"name":"Åland Islands",
"isoCode":"AX"
},
{
"name":"Albania",
"isoCode":"AL"
},
{
"name":"Algeria",
"isoCode":"DZ"
},
{
"name":"American Samoa",
"isoCode":"AS"
},
{
"name":"Andorra",
"isoCode":"AD"
}
],
{
schema : 'schema1'
}
);
},
down: function (queryInterface, Sequelize) {
}
};
运行种子时出现此错误:
node_modules/sequelize-cli/bin/sequelize --url postgres://user:password@localhost:5432/database db:seed
Sequelize [Node: 0.12.6, CLI: 2.0.0, ORM: 3.11.0, pg: ^4.4.2]
Parsed url postgres://user:*****@localhost:5432/database
Starting 'db:seed'...
Finished 'db:seed' after 165 ms
== 20151029161319-Countries: migrating =======
Unhandled rejection SequelizeDatabaseError: relation "country" does not exist
at Query.formatError (node_modules/sequelize/lib/dialects/postgres/query.js:437:14)
at null.<anonymous> (node_modules/sequelize/lib/dialects/postgres/query.js:112:19)
at emit (events.js:107:17)
at Query.handleError (node_modules/pg/lib/query.js:108:8)
at null.<anonymous> (node_modules/pg/lib/client.js:171:26)
at emit (events.js:107:17)
at Socket.<anonymous> (node_modules/pg/lib/connection.js:109:12)
at Socket.emit (events.js:107:17)
at readableAddChunk (_stream_readable.js:163:16)
at Socket.Readable.push (_stream_readable.js:126:10)
at TCP.onread (net.js:538:20)
我想我被困在这上面了。我将不胜感激任何提供的帮助/指导等。
感谢您的宝贵时间。
【问题讨论】:
-
DB 用户的
search_path是什么?也许它不包括schema1 -
感谢您的回复。执行:show search_path 结果是:"$user", public
-
那么当然不会将不合格的表名解析为
schema1。您需要更改用户的搜索路径以包含schema1,教您的库使用架构限定表,或者教您的库如何在连接后动态更改搜索路径 -
感谢有关“搜索路径”的信息
标签: postgresql express sequelize.js seeding