gpt4 book ai didi

MySql - 字段 'park_id' 没有默认值

转载 作者:行者123 更新时间:2023-11-29 10:59:13 25 4
gpt4 key购买 nike

我对 Mysql 很陌生,我已经被困在这个问题上有一段时间了。

我正在使用 bookshelfjs 创建多对多关系,每次我尝试将我的文章附加到公园时都会收到以下错误。

(node:24480) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: insert into articles_parks (article_id, park_id) values (0, DEFAULT) - ER_NO_DEFAULT_FOR_FIELD: Field 'park_id' doesn't have a default value

这是我的 MySQL 代码:

Create table parks( 
park_id integer,
primary key (park_id)
);

Create table articles(
article_id integer,
primary key (article_id)
);

CREATE TABLE articles_parks(
article_id integer,
park_id integer,
Primary Key (article_id,park_id),
Foreign Key (article_id) REFERENCES articles(article_id),
Foreign Key (park_id) REFERENCES parks(park_id)
);

这是我的书架代码:

var bookshelf = require('bookshelf')(knex);

var Article = bookshelf.Model.extend({
tableName: 'articles',
park: function() {
return this.belongsToMany(Park);
}
});

var Park = bookshelf.Model.extend({
tableName: 'parks',
articles: function() {
return this.belongsToMany(Article);
}
});
const number = 197;
var article1 = new Article({article_id: number});

Promise.all([article1.save()])
.then(function() {
return Promise.all([
new Park({park_id: 200}).articles().attach([article1]),
]);
})

最佳答案

您的两个主键(park_id 和article_id)未设置为自动递增。在 MySQL 中,您必须明确声明您希望主键自动递增,否则它将假定您将手动为其分配值。这就是为什么它返回一个错误,指出它们缺少默认值。

尝试将 SQL 代码编辑为:

Create table parks( 
park_id integer AUTO_INCREMENT,
primary key (park_id)
);

Create table articles(
article_id integer AUTO_INCREMENT,
primary key (article_id)
);

CREATE TABLE articles_parks(
article_id integer,
park_id integer,
Primary Key (article_id,park_id),
Foreign Key (article_id) REFERENCES articles(article_id),
Foreign Key (park_id) REFERENCES parks(park_id)
);

关于MySql - 字段 'park_id' 没有默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com