Sequelize Migration:关系<table>不存在

编程入门 行业动态 更新时间:2024-10-25 00:35:27
本文介绍了Sequelize Migration:关系<table>不存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在处理 Author hasMany Books 示例并尝试运行 sequelize-cli 迁移,但在运行以下迁移时遇到以下问题:

I'm working through an Author hasMany Books example and am attempting to run a sequelize-cli migration, but am getting the following issue when I run the following migration:

ERROR: relation "authors" does not exist

这是创建作者的第一个迁移:

This is the first migration to create an author:

'use strict'; module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.createTable('Authors', { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, firstName: { type: Sequelize.STRING }, lastName: { type: Sequelize.STRING }, dateOfBirth: { type: Sequelize.DATEONLY }, dateOfDeath: { type: Sequelize.DATEONLY }, createdAt: { allowNull: false, type: Sequelize.DATE }, updatedAt: { allowNull: false, type: Sequelize.DATE } }); }, down: (queryInterface, Sequelize) => { return queryInterface.dropTable('Authors'); } };

创建书籍的第二次迁移:

The second migration to create a book:

'use strict'; module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.createTable('Books', { id: { allowNull: false, autoIncrement: true, primaryKey: true, type: Sequelize.INTEGER }, title: { type: Sequelize.STRING }, summary: { type: Sequelize.STRING }, isbn: { type: Sequelize.STRING }, createdAt: { allowNull: false, type: Sequelize.DATE }, updatedAt: { allowNull: false, type: Sequelize.DATE } }); }, down: (queryInterface, Sequelize) => { return queryInterface.dropTable('Books'); } };

在 Author 和 Book 之间创建关系的迁移:

The migration to create the relationship between Author and Book:

'use strict'; module.exports = { up: (queryInterface, Sequelize) => { return queryInterface.addColumn( 'Books', // name of source model 'AuthorId', { type: Sequelize.INTEGER, references: { model: 'authors', key: 'id' }, onUpdate: 'CASCADE', onDelete: 'SET NULL' } ) }, down: (queryInterface, Sequelize) => { return queryInterface.removeColumn( 'Books', 'AuthorId' ) } };

这些是我的模型:

作者.js:

'use strict'; module.exports = (sequelize, DataTypes) => { var Author = sequelize.define('Author', { firstName: { type: DataTypes.STRING, allowNull: false, len: [2, 100] }, lastName: { type: DataTypes.STRING, allowNull: false }, dateOfBirth: { type: DataTypes.DATEONLY }, dateOfDeath: { type: DataTypes.DATEONLY } }, {}); Author.associate = function (models) { // associations can be defined here Author.hasMany(models.Book); }; return Author; };

book.js:

'use strict'; module.exports = (sequelize, DataTypes) => { var Book = sequelize.define('Book', { title: { type: DataTypes.STRING, allowNull: false, len: [2, 100], trim: true }, summary: { type: DataTypes.STRING, allowNull: false }, isbn: { type: DataTypes.STRING, allowNull: false } }, {}); Book.associate = function (models) { // associations can be defined here Book.belongsTo(models.Author); }; return Book; };

我尝试了各种方法都无济于事.我的猜测是它正在尝试以异步方式更改表,但之前的迁移运行并完成:

I've tried all sorts of things to no avail. My guess would be that it is attempting to alter the table in an asynchronous manner, but the previous migrations ran and finished:

我正在使用以下内容:

"pg": "^7.4.3" "sequelize": "^4.37.10" "sequelize-cli": "^4.0.0" "express": "~4.16.0"

我是续集的新手,任何帮助将不胜感激!

I'm very new to sequelize and any help would be appreciated!

推荐答案

你已经创建了 Authors 表,但是用一个小的 a 引用它.应该是这样的

You have created Authors table but referencing it with a small a. It should be like

references: { model: 'Authors', key: 'id' },

更多推荐

Sequelize Migration:关系<table>不存在

本文发布于:2023-10-14 11:54:56,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1490987.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:不存在   关系   Migration   Sequelize   amp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!