摘要:我尝试使用MySQL Workbench导入功能将csv文件上传到数据库表,但没有成功。错误日志显示“createdAt”列存在问题。我在Mac上工作。
我正在尝试使用MySQL Workbench导入向导将包含一些数据的csv文件上传到数据库中的表中。查找文件、将csv中的列与我的表匹配等所有步骤。似乎工作正常,但当我尝试运行导入时,我得到的结果显示0条记录已上传。
MySQL日志为csv文件中的每一行显示此错误:- Row import failed with error: ("Field 'createdAt' doesn't have a default value", 1364)
我能够通过Postman成功地将行添加到数据库,但CSV上传不起作用。
我的应用程序是用JavaScript使用Sequelize构建的。我的db.config文件看起来像这样:
module.exports = {
HOST: "localhost",
USER: "root",
PASSWORD: "myPassword",
DB: "cookbookdb",
dialect: "mysql",
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
};
我尝试填充的表的模型如下所示:
const { DECIMAL, STRING, INTEGER } = require("sequelize");
module.exports = (sequelize, Sequelize) => {
const Region = sequelize.define("region", {
country: {
type: Sequelize.STRING
},
alpha2Code: {
type: Sequelize.STRING
},
alpha3Code: {
type: Sequelize.STRING
},
lat: {
type: Sequelize.DECIMAL(8,6)
},
lng: {
type: Sequelize.DECIMAL(9,6)
}
});
return Region;
};
由于'createdAt'列是由MySQL生成的,我不知道是什么原因导致了这一点。'createdAt'列的信息显示它对应于datetime,这是当我通过Postman添加一行时生成的。MySQL显示:列:createdAt 定义:createdAt datetime
csv文件是来自谷歌的这个国家数据的原始版本:https://github.com/google/dspl/blob/master/samples/google/canonical/countries.csv
2条答案
按热度按时间hl0ma9xz1#
你可以把这些值添加到你的模块中,因为你还没有告诉版本或整个过程和csv文件,我所知道的一般解决方案是这样的。
只需在模型中添加这些条件即可。
或者在使用deop命令创建文件后删除列
你也可以参考这个答案,因为它与你的问题相似。
https://stackoverflow.com/a/39587875/21179012
kuuvgm7e2#
我最终发现,在
createdAt
和updatedAt
列的DEFAULT
之前添加NULL
解决了我的问题。由于我在使用其他CSV文件以及另一个测试数据库时遇到了同样的问题,因此如果其他人遇到同样的问题,在使用MySQL工作台GUI导入时,这看起来是一个很好的解决方案。