Javascript 未知列';创建于';在';字段列表
这是我的客户_schema.js文件:Javascript 未知列';创建于';在';字段列表,javascript,mysql,node.js,adonis.js,Javascript,Mysql,Node.js,Adonis.js,这是我的客户_schema.js文件: up () { this.create('customers', (table) => {
up () {
this.create('customers', (table) => {
table.increments()
table.string('name', 30)
})
}
CustomerSeed.js:
class CustomerSeeder {
async run () {
const customer = await Factory
.model('App/Models/Customer')
.create()
console.log('customer: ')
}
}
Customer.js模型为“空”
我运行迁移,一切正常,但无法运行种子:adonis seed
抛出此错误消息:
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlMessage: "Unknown column 'created_at' in 'field list'",
sqlState: '42S22',
index: 0,
sql:
"insert into `customers` (`created_at`, `name`, `updated_at`) values ('2019-03-04 20:01:17', 'Peter Walsh', '2019-03-04 20:01:17')" }
为什么会发生这种情况?我甚至没有在模式文件中声明table.timestamps()
,并且:
describe customers;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(30) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
编辑:
将这两个功能添加到您的模型中,它应该可以工作:)编辑:
将这两个函数添加到您的模型中,它应该会起作用:)要添加到前面的好答案中,当您随着应用程序的增长拥有许多模型时,您可以自动执行上述解决方案,而不是按模型编写:
'use strict'
class NoTimestamp {
register (Model) {
Object.defineProperties(Model, {
createdAtColumn: {
get: () => null,
},
updatedAtColumn: {
get: () => null,
},
})
}
}
module.exports = NoTimestamp
感谢向我展示解决方案的Romain Lanz。要补充前面的好答案,随着应用程序的增长,当您有很多模型时,您可以自动化上述解决方案,而不是按照模型编写:
'use strict'
class NoTimestamp {
register (Model) {
Object.defineProperties(Model, {
createdAtColumn: {
get: () => null,
},
updatedAtColumn: {
get: () => null,
},
})
}
}
module.exports = NoTimestamp
感谢罗曼·兰兹为我展示了解决方案。我按照你的建议做了,但我明白了问题所在。奇怪的是,我的MySQL表根本没有这些列,因为我的模式文件没有声明它们+1尽管很抱歉,我在问题中没有提到它,但我使用了
数据库/factory.js
为表添加种子。谢谢我使用MySQL数据库这是你做的很多工作,谢谢:)我以前尝试过这个解决方案,当你给我文档的链接时,我检查了你的代码和我的代码之间的差异:在我的updateDataColumn()
中,而不是返回null
我返回了
(一个点),因此,您的第一个解决方案是正确的。这是Node.js应用程序的干净解决方案(从我所读到的。你在这方面花了很多精力,你得到了我的尊重。非常感谢。我按照你的建议做了,但我得到了问题。奇怪的是,我的MySQL表根本没有这些列,因为我的模式文件没有声明它们。+1的努力虽然抱歉,我在问题中没有提到,但我使用了database/factory.js
为表种子。谢谢我使用MySQL数据库这是你做的很多工作,谢谢:)我以前尝试过这个解决方案,当你给我文档的链接时,我检查了你的代码和我的代码之间的差异:在我的updateDataColumn()中
而不是返回null
我返回了
(一个点),因此您的第一个解决方案是正确的。这是Node.js应用程序的一个干净的解决方案(据我所知。您在这方面花费了很多精力,我尊敬您。非常感谢您。