我使用 knex 和 express 作为后端.. 这是knexfile
module.exports = {
development: {
client: 'postgresql',
connection: {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
database: process.env.DB_NAME,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: 'knex_migrations',
directory: './src/knex/migrations'
},
seeds: {
directory: './src/knex/seeds'
}
},
production: {
client: 'postgresql',
connection: {
database: 'my_db',
user: 'username',
password: 'password'
},
pool: {
min: 2,
max: 10
},
migrations: {
tableName: 'knex_migrations'
}
}
};
我可以连接到数据库,并且我已经从我的 express 中测试过了,我也可以使用 npx knex
并且 cli
仅在终端上成功迁移会给出绿色成功消息......但是,数据库仍然有零个表。没有迁移表或任何表..我什至删除了数据库并重新创建了另一个......似乎cli
没有与实际的Postgres服务器连接..
任何想法。
用户迁移
exports.up = function (knex, Promise) {
return knex.schema.createTable('users', function (table) {
table.increments();
table.string('email').notNull();
table.string('password').notNull();
table.timestamp('created_at').defaultTo(knex.fn.now());
table.timestamp('updated_at').defaultTo(knex.fn.now());
table.timestamp('deleted_at');
});
};
exports.down = function (knex, Promise) {
return knex.schema.dropTable('users');
};
答案 0 :(得分:1)
postgresql 的客户端应该是 'pg' 而不是 'postgresql' 尝试在开发和生产中更改它