私はiOS開発者であり、2つのSQLiteデータベースの接続に問題があります。実行中にこのエラーが発生します:
Error calling sqlite3_step (1: SQL logic error or missing database) SQLITE_ERROR
2012-06-19 11:10:19.658 °°°°°°°[453:707] DB Query: ATTACH DATABASE '/var/mobile/Applications/A05034A8-F5AF-45AA-B520-DF2BBEBB800B/Documents/Meals.db' AS mealDB
2012-06-19 11:10:19.672 °°°°°°°[453:707] Err 1: no such table: Meal
2012-06-19 11:10:19.680 °°°°°°°[453:707] Error calling sqlite3_step (1: SQL logic error or missing database) SQLITE_ERROR
2012-06-19 11:10:19.684 °°°°°°°[453:707] DB Query: ATTACH DATABASE '/var/mobile/Applications/A05034A8-F5AF-45AA-B520-DF2BBEBB800B/Documents/Meals.db' AS mealDB
2012-06-19 11:10:19.693 °°°°°°°[453:707] Err 1: no such table: MealItem
2012-06-19 11:10:19.698 °°°°°°°[453:707] ERREUR
添付後、データ収集を試みています。彼は私たちが検索しているテーブルを見つけていません:Err 1:そのようなテーブルはありません:MealItemまたはErr 1:そのようなテーブルはありません:食事。
それはさらに奇妙になります!iOS 5.0を使用してSimで同じコードをテストすると、機能します。リクエストからデータが返ってきました!それでもこのエラーが数回発生します:
Error calling sqlite3_step (1: SQL logic error or missing database) SQLITE_ERROR
2012-06-19 11:10:19.684 °°°°°°°[453:707] DB Query: ATTACH DATABASE '/var/mobile/Applications/A05034A8-F5AF-45AA-B520-DF2BBEBB800B/Documents/Meals.db' AS mealDB
sqlight managerで2つのデータベースを接続してみましたが、成功しました。この結果データベースは、アプリケーションでも機能しました。iOSでデータベースの接続に問題があるようです。または、どこかでエラーが発生しました。
私たちは今のところ運のない解決策を探しています。
ここにいくつかのコードがあります:(FMDatabaseapiを使用して)
- (FMDatabase *) attachMealDatabase:(FMDatabase *) db {
if (![db open]) {
NSLog(@"Could not open db.");
return nil;
}else {
}
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDirectory = [paths objectAtIndex:0];
//const char * mainDBPath = [[documentDirectory stringByAppendingPathComponent:@"Main.db"] UTF8String];
const char * mealDBPath = [[documentDirectory stringByAppendingPathComponent:@"Meals.db"] UTF8String];
NSString *attachSQL = [NSString stringWithFormat: @"ATTACH DATABASE \'%s\' AS mealDB", mealDBPath];
[db beginTransaction];
[db executeUpdate:attachSQL];
[db commit];
//[db close];
return db;
}