我有一个问题,我有一个小程序,可以检索CSV文件并将其转换为Sqlite数据库。在Windows上,没问题,它工作得很好。但是,在Linux上,我收到一条错误消息:
string connectionString = "Data Source=" + PathFile + targetFile;
using (SqliteConnection m_dbConnection = new SqliteConnection(connectionString))
{
m_dbConnection.Open();
// Requêtes de création des tables
string sql = String.Empty;
sql = String.Concat(sql, "CREATE TABLE TARGETS (idTarget NUMERIC, customerId NUMERIC, numberCard TEXT, mail TEXT, mobile TEXT, bat NUMERIC);");
sql = String.Concat(sql, "CREATE TABLE COLUMNS (idColumn NUMERIC, name TEXT, isVariable NUMERIC);");
sql = String.Concat(sql, "CREATE TABLE ROW (idTarget NUMERIC, idColumn TEXT, value TEXT);");
// Execution des requêtes de création
using (SqliteCommand command = new SqliteCommand(sql, m_dbConnection))
{
countRow += command.ExecuteNonQuery(); // <===== /!\ Exception here
}
}
Unhandled Exception: Microsoft.Data.Sqlite.SqliteException: SQLite Error 5: 'database is locked'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteNonQuery()
at Mailing.Service.ServiceFile.ConvertCSVToSQLite(String sourceFile, String targetFile)
at Mailing.Service.ServiceFile.UploadFile(Byte[] byteFile, String filename, TypeCanal canal, Int32 idMailing, Boolean async)
at MailingAutomator.Program.Main(String[] args) in Program.cs:line 64
在Linux和Windows之间,Microsoft.Data.Sqlite是否有所不同? 这与以下事实有关:在Linux上,我在已安装的NAS上进行读写?访问问题? sqlite数据库已创建但为空。
.NET Core 2.2 Microsoft.Data.Sqlite Ubuntu 16.04
编辑:一些新闻: 当我在其他ubuntu服务器上使用samba共享时,它起作用了 但是在其他Windows共享上,我再次收到此错误...日记文件出现并消失了几次。 我不明白,sqlite文件已创建但为空
答案 0 :(得分:0)
我的代码没问题。 我通过在安装命令中添加“ nobrl”解决了我的问题,并且可行。
.findAll("table")