2016-12-08 72 views
1

我們目前使用mysql/knex,並且我將SQLite添加爲用於測試目的的數據庫。我得到knex如何處理SQLite中的默認值?

Knex:警告 - sqlite不支持插入默認值。設置useNullAsDefault標誌以隱藏此警告。 (見文檔http://knexjs.org/#Builder-insert)。

Knex如何處理默認值?它是否會刪除任何默認值,或者是否在插入後的缺省值中添加UPDATE語句?

我不想改變我們所有的代碼庫(換掉所有默認值),試圖做最小的改變,這將允許我在我們的測試中運行SQLite ......這會引發bug。

回答

3

我不擅長與SQL - & sqlite的,但我學習knex.js這樣我就可以在涉及PostgreSQL的項目中使用它。在嘗試使用sqlite時,我遇到了這個問題。

原來這是documented!

如果一個人喜歡的是未定義鍵與NULL,而不是默認的更換可能會在knex配置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大師或任何接近的人進一步解釋,但我希望這有助於爲它去掉了警告信息給我。

+1

請注意'sqlite'客戶端只需要一個'filename'屬性而不是'host' /'user' /'password' /'database',如代碼片段所示。 – cyanbeam

+0

謝謝@cyanbeam我不知道我是怎麼錯過的。 謝謝! – ArchNoob