2016-12-08 1 views
1

В настоящее время мы используем mysql/knex, и я добавляю SQLite в качестве базы данных для целей тестирования. Я получаюКак knex обрабатывает значения по умолчанию в SQLite?

Knex: warning - sqlite не поддерживает ввод значений по умолчанию. Установите флаг useNullAsDefault, чтобы скрыть это предупреждение. (см. документы http://knexjs.org/#Builder-insert).

Как Knex обрабатывает значения по умолчанию? Оставляет ли он по умолчанию какие-либо значения по умолчанию или добавляет значения по умолчанию после вставки в соответствии с инструкциями UPDATE?

Я не хочу менять всю нашу кодовую базу (заменяю все значения по умолчанию), пытаясь выполнить минимальные изменения, которые позволят мне запустить SQLite в наших тестах ... в связи с этим появятся ошибки.

ответ

3

Я плохо разбираюсь в sql - & sqlite, но я изучаю knex.js, поэтому я могу использовать его в проекте с участием postgresql. Пробовав sqlite, я столкнулся с этой проблемой.

Оказывается, это documented!

Если кто-то предпочитает, что неопределенные ключи заменяются NULL вместо DEFAULT один может дать параметр конфигурации useNullAsDefault в knex конфигурации.

И они дают этот код.

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 или где-нибудь рядом, чтобы объяснить больше, но я надеюсь, что это помогает, как удалить это предупреждение для меня.

+1

Обратите внимание, что клиент 'sqlite' рассчитывает только свойство' filename' вместо 'host' /' user'/'password' /' database', как показано в фрагменте кода. – cyanbeam

+0

Спасибо @cyanbeam Я не знаю, как я это пропустил. Спасибо! – ArchNoob

Смежные вопросы