執行 table,空無一物
# sqlite3 config.sqlite .table
#
執行dump,則發生 database is locked 的錯誤
# sqlite3 config.sqlite .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
/**** ERROR: (5) database is locked *****/
ROLLBACK; -- due to errors
…… 原以為是cross compiler 時,./configure 沒作好,導致執行錯誤,在多次搜尋後才發現有這一段解釋及說明…
This problem is caused by unsetting of CONFIG_FILE_LOCKING in kernel by default in uClinux distro.
SQLite uses fcntl for database locking. Therefore the CONFIG_FILE_LOCKING must be set to CONFIG_FILE_LOCKING=y (File systems -> [*] Enable POSIX file locking API).
簡單說就是uclinux的原本設置並沒有把kernel 中 CONFIG_FILE_LOCKING 打開,而sqlite3 使用fcntl 來作 database 的存取,所以要勾選 kernel中 File systems -> [*] Enable POSIX file locking API 的選項,這麼一來# sqlite3 config.sqlite .table 或 # sqlite3 config.sqlite .dump 就能成功執行了!
沒有留言:
張貼留言