Hello:
After generating an in memory db schema, I use the attach command to
replicate that schema to a file - at least that is my intention. I get
a no such table error, so something is wrong somewhere. Can someone
get me on the right track?
Cheers,
Berryl
=
Code called after in memory db is created with test data:
=
public void ExportData(SQLiteConnection conn, string dataFile)
{
if (!File.Exists(dataFile)) {
SQLiteConnection.CreateFile(dataFile);
}
_attachDatabase(conn, dataFile);
foreach (var table in _getTableNames(conn)) {
_copyTableData(conn, table,
_getAttachedTableName(table));
}
_detachDatabase(conn);
}
private static IEnumerable
_getTableNames(SQLiteConnection conn) {
var tables = SQLiteMetaDataCollectionNames.Tables;
var dt = conn.GetSchema(tables);
return dt.Rows.Cast().Select(R => (string)
R["TABLE_NAME"]);
}
private static string _getAttachedTableName(string table)
{ return string.Format("{0}.{1}", ATTACHED_DB, table); }
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();
}
private static void _copyTableData(SQLiteConnection conn,
string source, string destination) {
var cmd = new SQLiteCommand(conn)
{
CommandText = string.Format("INSERT INTO {0} SELECT *
FROM {1}", destination, source)
};
_log.Debug(cmd.CommandText);
cmd.ExecuteNonQuery();
}
==
error, stack trace and log output
==
TestFixture failed: System.Data.SQLite.SQLiteException : SQLite error
no such table: asdfgaqwernb.ActorRole
at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String
strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
at System.Data.SQLite.SQLiteCommand.BuildNextCommand()
at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
at System.Data.SQLite.SQLiteDataReader.NextResult()
at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd,
CommandBehavior behave)
at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior
behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
at
SQLiteTesting.Helpers.SQLiteLoader._copyTableData(SQLiteConnection
conn, String source, String destination) in C:\Users\Lord & Master
\Documents\Projects\Data\NHib projects\Cookbook\SQLiteTesting\Helpers
\SQLiteLoader.cs:line 71
at SQLiteTesting.Helpers.SQLiteLoader.ExportData(SQLiteConnection
conn, String dataFile) in C:\Users\Lord & Master\Documents\Projects
\Data\NHib projects\Cookbook\SQLiteTesting\Helpers
\SQLiteLoader.cs:line 33
at SQLiteTesting.Helpers.QueryTests.OnFixtureSetUp() in C:\Users
\Lord & Master\Documents\Projects\Data\NHib projects\Cookbook
\SQLiteTesting\Helpers\QueryTests.cs:line 32
at SQLiteTesting.Helpers.BaseFixture.FixtureSetUp() in C:\Users
\Lord & Master\Documents\Projects\Data\NHib projects\Cookbook
\SQLiteTesting\Helpers\BaseFixture.cs:line 23
2010-11-24 10:00:24,968 INFO processing cascade
NHibernate.Engine.CascadingAction+SaveUpdateCascadingAction for:
Eg.Core.Movie
2010-11-24 10:00:24,968 INFO cascade NHibernate.Engine.CascadingAction
+SaveUpdateCascadingAction for collection: Eg.Core.Movie.Actors
2010-11-24 10:00:24,970 INFO done cascade
NHibernate.Engine.CascadingAction+SaveUpdateCascadingAction for
collection: Eg.Core.Movie.Actors
2010-11-24 10:00:24,970 INFO deleting orphans for collection:
Eg.Core.Movie.Actors
2010-11-24 10:00:24,973 INFO done deleting orphans for collection:
Eg.Core.Movie.Actors
2010-11-24 10:00:24,973 INFO done processing cascade
NHibernate.Engine.CascadingAction+SaveUpdateCascadingAction for:
Eg.Core.Movie
2010-11-24 10:01:25,195 DEBUG ATTACH '...\SPUD.db3' AS asdfgaqwernb
2010-11-24 10:03:22,362 DEBUG INSERT INTO asdfgaqwernb.ActorRole
SELECT * FROM ActorRole
___
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users