私はSqlite3が初めてです。私は C++ インターフェイス、特に合併を使用しています。データベースは、rw 権限、具体的には 0x644 を持つ tmp フォルダーに作成されています。テーブルを書き込もうとすると、エラー SQLITE_IOERR_LOCK (3850) が発生します。私は QNX os で実行しています。これを解決するにはどうすればよいですか?
ありがとう!
bool myApp::Start()
{
bool retVal = false;
int rc, ret;
char sql [] = "CREATE TABLE IF NOT EXISTS ZPL_CMDS(" \
"id INT PRIMARY KEY NOT NULL," \
"myCount INT NOT NULL );" ;
char *zErrMsg = 0;
// initialize engine
if (SQLITE_OK != (ret = sqlite3_initialize()))
{
printf("Failed to initialize library: %d\n", ret);
} else {
printf("SQLITE3 library Initialized!\n");
}
rc = sqlite3_open("/tmp/zplCmd.db", &db);
if(!sqlite3_extended_result_codes(db, 1))
{
printf("SQLITE3: extended result codes turned ONs\n");
}
else
{
printf("SQLITE3: extended result codes turned OFF\n");
}
if( rc ){
printf("Can't open database: %s\n", sqlite3_errmsg(db));
return(0);
}else{
printf("Opened database successfully: %s\n", sqlite3_errmsg(db));
}
/* write tables */
rc = sqlite3_exec(db, sql, NULL, 0, NULL); // <-- my code fails here
if( rc != SQLITE_OK ){
printf("SQL error: %s, %d\n", sqlite3_errmsg(db), rc);
sqlite3_free(zErrMsg);
} else {
printf("Table created successfully\n");
}
retVal を返します。}