1
데이터베이스에 새 파일을 추가하려고 할 때 Spatialite에서 다음 오류가 발생합니다.VACUUM 결과가 "데이터베이스 파일을 열 수 없습니다"
10-05 11:50:01.408: E/GDH(1545): jsqlite.Exception: unable to open database file
10-05 11:50:01.408: E/GDH(1545): at jsqlite.Database._exec(Native Method)
10-05 11:50:01.408: E/GDH(1545): at jsqlite.Database.exec(Database.java:177)
10-05 11:50:01.408: E/GDH(1545): at com.kd7uiy.hamfinder.database.GeoDataHelper.addDb(GeoDataHelper.java:153)
이 코드는 UI 스레드는 별개의 스레드 실행하고 GeoDataHelper.addDb로 표시된 라인 (153)에서 다음 코드를 실행한다.
Database db = new Database();
db.open(mDatabasePath + "/" + mName,
jsqlite.Constants.SQLITE_OPEN_READWRITE);
// set parameters
db.exec("PRAGMA journal_mode = PERSIST;", null);
db.exec("PRAGMA temp_store = FILE;", null);
db.exec("PRAGMA temp_store_directory = \"" + mDatabasePath+"/"+mName + "\";", null);
내가 처음 두 호출이 유효한 방법을 이해하지 않지만, VACUUM는되지 않습니다 :
Database db = this.getWritableDatabase();
TableResult result=new TableResult(); //Filler, isn't really needed, but...
db.exec("ATTACH DATABASE \"%q\" AS newDb",result,new String[]{path});
db.exec("REPLACE INTO counties(name,cntyidfp,geometry) "
+ "SELECT name,cntyidfp,geometry FROM newDb.counties",result);
db.exec("VACUUM",result);
db.exec("DETACH DATABASE newDb",result);
데이터베이스를 엽니 코드는 다음이 포함되어 있습니다. 어떤 아이디어?
주 (http://sqlite.org/pragma.html#pragma_temp_store_directory) –