首页 文章

sqlite附加数据库问题

提问于
浏览
0

当我尝试访问带有构建模式的有效SQLiteConnection上的附加db文件时,我收到“无此表”错误 .

在“主”连接上保存一些测试数据后,我附加该文件,然后尝试将数据从“main”导出到该文件以供以后使用 . 以下是用于附加文件的代码:

private static void _attachDatabase(SQLiteConnection conn, string dataFile) {
var cmd = new SQLiteCommand(conn)
                  {
                      CommandText = string.Format("ATTACH '{0}' AS {1}", dataFile, ATTACHED_DB)
                  };
_log.Debug(cmd.CommandText);
cmd.ExecuteNonQuery();
}

该命令的日志输出是

"...\bin\Debug\testData.db3' AS asdf" where testData.db3 is the file.

当我尝试插入文件时,我在本文末尾收到错误 .

有没有从提供的信息中看到问题?顺便说一句,我应该能够在调试器中的某处看到附加的db(“asdf”)吗?

干杯,
Berryl

测试'SQLiteTesting.Helpers.QueryTests.Director_if_Tim_Burton_query_should_return_one_movie'失败:QueryFsts中的TestFixtureSetUp失败

TestFixture失败:System.Data.SQLite.SQLiteException:SQLite错误没有这样的表:System.Data的System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn,String strSql,SQLiteStatement previous,UInt32 timeoutMS,String&strRemain)的asdf.ActorRole位于System.Data.SQLite.SQLiteDataReader()的System.Data.SQLite.SQLiteData.DeterResult()的System.Data.SQLite.SQLiteCommand.GetStatement(Int32索引)中的.SQLite.SQLiteCommand.BuildNextCommand()(SQLiteCommand cmd,CommandBehavior)在C:\中的SQLiteTesting.Helpers.SQLiteLoader._copyTableData(SQLiteConnection conn,String source,String destination)上的System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()处的System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior行为)处理 . 用户\ Lord&Master \ Documents \ Projects \ Data \ NHib projects \ Cookbook \ SQLiteTesting \ Helpers \ SQLiteLoader.cs:第66行,位于C:\ Users \ Lord&中的SQLiteTesting.Helpers.SQLiteLoader.ExportData(SQLiteConnection conn,String dataFile) Master \ Documents \ Projects \ Data \ NHib p rojects \ Cookbook \ SQLiteTesting \ Helpers \ SQLiteLoader.cs:在C:\ Users \ Lord&Master \ Documents \ Projects \ Data \ NHib projects \ Cookbook \ SQLiteTesting \ Helpers \ QueryTests中的SQLiteTesting.Helpers.QueryTests.OnFixtureSetUp()第30行.cs:位于C:\ Users \ Lord&Master \ Documents \ Projects \ Data \ NHib projects \ Cookbook \ SQLiteTesting \ Helpers \ BaseFixture.cs:line 23 2010-11-中SQLiteTesting.Helpers.BaseFixture.FixtureSetUp()的第25行23 18:15:36,835 DEBUG ATTACH'... \ bin \ Debug \ testData.db3'AS asd 2010-11-23 18:18:12,935 DEBUG INSERT INTO asdf.ActorRole SELECT * FROM ActorRole

2 回答

  • 2

    线索是:

    SQLite error no such table: asdf.ActorRole at
    

    如果你确实已经定义了表,那么你已经遭遇了主要(可能只有!)sqlite陷阱 . 如果数据库文件没有退出,它将悄悄地为您创建一个空数据库 .

    仔细检查文件路径并查找出现在目录中的新空sq3文件 .

  • 0

    你需要 AS {1} 声明吗?强制数据库名称似乎令人困惑 .

相关问题