knex如何处理SQLite中的默认值?

时间:2016-12-08 02:18:17

标签: sql sqlite knex.js

我们目前使用mysql / knex,并且我将SQLite作为数据库添加用于测试目的。我得到了

  

Knex:warning - sqlite不支持插入默认值。设置$postid标志以隐藏此警告。 (参见文档http://knexjs.org/#Builder-insert)。

Knex如何处理默认值?它是否只删除任何默认值,还是在插入后添加默认值为useNullAsDefault个语句?

我不想改变我们所有的代码库(换出所有默认值),尝试进行最小的更改,这将允许我在测试中运行SQLite ......关注这会引入错误。< / p>

1 个答案:

答案 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,也不是接近解释更多的东西,但我希望这有帮助,因为它为我删除了警告信息。