如何解决Sequelize迁移工具找不到config.json中定义的架构
从postgres映像启动docker容器时,它仅在数据库下创建公共架构。这是我的设置
postgres:
container_name: postgres
image: postgres:latest
ports:
- "${DB_PORT}:5432"
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
我的解决方法是
// 111111-create-schema.js
await queryInterface.createSchema('custom');
// 222222-create-user.js
await queryInterface.createTable('Users',{},{schema: 'custom'}
运行npx sequelize-cli db:migrate
时,确实在自定义架构中看到了我的用户表。但是,存储迁移的 sequelizeMeta 表位于 PUBLIC shema
我还尝试在config.json中添加schema: 'custom'
。但是,运行db:migrate时出现未找到自定义架构错误。我认为此时我的迁移脚本尚未运行,然后尝试找到该自定义架构。
然后我尝试手动在pgadmin中创建架构。然后我看到用户表和sequelizeMeta表都在此自定义架构中。
我想知道如何让postgres docker容器像使用POSTGRES_DB环境变量预创建数据库一样预创建模式?像
postgres:
container_name: postgres
image: postgres:latest
ports:
- "${DB_PORT}:5432"
environment:
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=${DB_NAME}
- POSTGRES_SCHEMA=${DB_SCHEMA} <---------------
还是我错过的简单而适当的迁移迁移方法?
解决方法
在创建sequelize连接时,请在定义对象上说出您的架构,如下所示:
const sequelize = new Sequelize(database,username,password,{
host,dialect,port,omitNull: true,define: {
schema: "your-schema"
timestamps: true,underscored: true
},...
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。