我们目前使用mysql / knex,并且我将SQLite作为数据库添加用于测试目的。我得到了
Knex:warning - sqlite不支持插入默认值。设置
$postid
标志以隐藏此警告。 (参见文档http://knexjs.org/#Builder-insert)。
Knex如何处理默认值?它是否只删除任何默认值,还是在插入后添加默认值为useNullAsDefault
个语句?
我不想改变我们所有的代码库(换出所有默认值),尝试进行最小的更改,这将允许我在测试中运行SQLite ......关注这会引入错误。< / p>
答案 0 :(得分:7)
我对sql并不擅长 - &amp; sqlite,但我正在学习knex.js
所以我可以在涉及postgresql的项目中使用它。在尝试使用sqlite时,我遇到了这个问题。
原来是documented!
如果有人更喜欢将未定义的键替换为NULL而不是DEFAULT,则可以在knex config中给出useNullAsDefault配置参数。
他们给出了这段代码。
var knex = require('knex')({
client: 'sqlite3',
connection: {
filename: "./mydb.sqlite"
},
useNullAsDefault: true
});
knex('coords').insert([{x: 20}, {y: 30}, {x: 10, y: 20}])
// insert into `coords` (`x`, `y`) values (20, NULL), (NULL, 30), (10, 20)"
就像我说的那样,我不是sql guru,也不是接近解释更多的东西,但我希望这有帮助,因为它为我删除了警告信息。