首先我使用System.Data.SQLite v1.0.111来打开内存数据库连接,如下所示。
SQLiteConnection dest= new SQLiteConnection("FullUri='file:db1?mode=memory&cache=shared'");
dest.Open();
我有另一个sqlite数据库文件,可以按照以下方式打开。
SQLiteConnection src= new SQLiteConnection(@"Data Source=C:\db1.sqlite");
src.Open();
接下来,我尝试使用VACUUM INTO
SQL将文件数据库复制到内存数据库中,但出现了错误。
using( SQLiteCommand cmd = src.CreateCommand() )
{
cmd.CommandText = $"VACUUM main INTO 'file:db1?mode=memory&cache=shared';";
cmd.ExecuteNonQuery();
}
SQLite异常:内存不足
at System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
at System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
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(CommandBehavior behavior)
at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
文件中的数据库很小(20KB),但它说内存不足?
谢谢
Data Source=:memory:;Version=3;New=True;
或者Data Source=:memory:;Version=3;New=True;Cache=Shared;
是可行的,但是file:db1...
不行。后者会抛出异常"数据源不能为空。请使用 :memory: 来打开内存数据库"。 - AlainDData Source=:memory:;Version=3;New=True;
或Data Source=:memory:;Version=3;New=True;Cache=Shared;
可以正常工作,但file:db1...
不行。后者会抛出异常"数据源不能为空。请使用:memory:来打开内存数据库"。 - undefined