Je reçois une erreur "no such table" lorsque j'essaie d'accéder à un fichier db attaché qui se trouve sur une connexion SQLite valide avec un schéma construit. Après avoir sauvegardé certaines données de test sur la connexion "principale", j'attache le fichier, puis j'essaie d'exporter les données de "main" vers le fichier pour une utilisation ultérieure. Voici le code utilisé pour joindre le fichier:Problème de base de données attachée sqlite
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();
}
La sortie du journal de la commande est
"...\bin\Debug\testData.db3' AS asdf" where testData.db3 is the file.
Lorsque je tente d'insérer dans le fichier si, je reçois l'erreur à la fin de cette poster.
Est-ce que quelqu'un voit le problème dans les informations fournies? En aparté, devrais-je pouvoir voir le db attaché ("asdf") quelque part dans le débogueur?
Cheers,
Berryl
Test 'SQLiteTesting.Helpers.QueryTests.Director_if_Tim_Burton_query_should_return_one_movie' a échoué: TestFixtureSetUp a échoué dans QueryTests
TestFixture a échoué: System.Data.SQLite.SQLiteException: erreur SQLite pas une telle table : asdf.ActorRole à System.Data.SQLite.SQLite3.Prepare (SQLiteConnection cnn, chaîne strSql, SQLiteStatement précédent, UInt32 timeoutMS, chaîne & strRemain) à System.Data.SQLite.SQLiteCommand.BuildNextCommand () à System.Data.SQLite.SQLiteCommand.GetStatement (indice Int32) à System.Data.SQLite.SQLiteDataReader.NextResult() à System.Data.SQLite.SQLiteDataReader..ctor (SQLiteCommand cmd, comportez CommandBehavior) à System.Data.SQLite.SQLiteCommand.ExecuteReader (comportement CommandBehavior) à System.Data.SQLite.SQLiteCommand.ExecuteNonQuery() à SQLiteTesting.Helpers.SQLiteLoader._copyTableData (connexion SQLiteConnection, source de chaîne, destination de la chaîne) dans C: \ Users \ Lord & Master \ Documents \ Projets \ Données \ Projets NHIB \ Cookbook \ SQLiteTesting \ Helpers \ SQLiteLoader.cs: ligne 68 à SQLiteTesting.Helpers.SQLiteLoader.ExportData (SQLiteConnection conn, String dataFile) dans C: \ Users \ Lord & Master \ Documents \ Projets \ Données \ NHib projec ts \ Cookbook \ SQLiteTesting \ Helpers \ SQLiteLoader.cs: ligne 30 à SQLiteTesting.Helpers.QueryTests.OnFixtureSetUp() dans C: \ Users \ Lord & Master \ Documents \ Projets \ Données \ Projets NHIB \ Cookbook \ SQLiteTesting \ Helpers \ QueryTests.cs: ligne 25 à SQLiteTesting.Helpers.BaseFixture.FixtureSetUp() dans C: \ Users \ Lord & Master \ Documents \ Projets \ Données \ Projets NHIB \ Cookbook \ SQLiteTesting \ Helpers \ BaseFixture.cs: ligne 23 2010 -11-23 18: 15: 36,835 DEBUG ATTACH '... \ bin \ Debug \ testData.db3' AS asd 2010-11-23 18: 18: 12,935 INSEREZ DEBUG DANS asdf.ActorRole SELECT * FROM ActorRole
Salut James. Est-il incorrect de supposer que l'attachement copie automatiquement le schéma de la connexion existante dans le fichier joint db? Si oui, et que j'ai besoin de répliquer manuellement toutes les tables, quel est le meilleur moyen de le faire? Bravo – Berryl
Ce n'est pas ce que j'ai dit! Si vous spécifiez un fichier inexistant, sqlite en crée un nouveau avec un schéma vide. –
Vous avez dit que ce serait vide, ce qui * m'a * aidé à comprendre que ATTACH ne reproduisait pas le db comme je le pensais. Après avoir créé les tables, tout fonctionne bien. Je pense que des questions de suivi pour clarifier de nouvelles informations sont une bonne chose, n'est-ce pas? – Berryl