.NET Core SQLite“数据库已锁定”仅在Linux上

时间:2019-02-18 21:28:05

标签: c# linux sqlite .net-core ubuntu-16.04

我有一个问题,我有一个小程序,可以检索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文件已创建但为空

1 个答案:

答案 0 :(得分:0)

我的代码没问题。 我通过在安装命令中添加“ nobrl”解决了我的问题,并且可行。

.findAll("table")