2015年1月29日 星期四

(linux心得) sqlite3 /**** ERROR: (5) database is locked *****/ 的解決方案

embedded system下 執行sqlite3 遇到問題了

執行 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).

原文出自: https://ez.analog.com/docs/DOC-6566

簡單說就是uclinux的原本設置並沒有把kernel 中 CONFIG_FILE_LOCKING 打開,而sqlite3 使用fcntl 來作 database 的存取,所以要勾選 kernel中 File systems -> [*] Enable POSIX file locking API 的選項,這麼一來# sqlite3 config.sqlite .table 或 # sqlite3 config.sqlite .dump 就能成功執行了!

2015年1月19日 星期一

執行make menuconfig,發生 Error opening terminal: xterm錯誤的另一種解決方法


參考文章:http://www.hicpe.net/forum.php?mod=viewthread&tid=971

經由上一篇的方法還是無法解決的話

這邊再補充一種方法

<作業系統 VMplayer for Ubuntu 13.10>

1. 再度確認已執行 sudo apt-get install ncurses-base  ncurses-bin ncurses-term libncurses5 libncurses5-dev

2.確定/usr/share/terminfo 底下有1-9,a-z的目錄

3. 因為錯誤生在 xterm. 所以在/usr/share/terminfo/x/ 之下找到xterm1

4. export TERM=xterm1
    export TERMINFO=/usr/share/terminfo

5. 再執行 make menuconfig