簡體   English   中英

我收到“SQLite 錯誤 14:'無法打開數據庫文件'”。

[英]I'm receiving “SQLite Error 14: 'unable to open database file'.”

我正在 Z303CB0EF9EDB9082D61BBBE5825D972.AZ 框架上編寫 ASP.NET web API。 我想在我的硬盤驅動器上的文件中有一個 SQLite 數據庫。 然后我可以使用 SqliteConnection 訪問數據庫。

在我的代碼中,我調用var db = new SqliteConnection("Data Source=testDB.sqlite"); 創建 SqliteConnection。 然后我調用db.Open(); . 此 function 引發 Microsoft.Data.Sqlite.SqliteException,其中包含錯誤“SQLite 錯誤 14:'無法打開數據庫文件'”。

我嘗試手動創建 testDB.sqlite 文件,但不知道該放在哪里。 我沒有要求 SqliteConnection 創建任何目錄。 我不是在編寫 UWP 應用程序(因為 ASP.NET 與 UWP 不同,對嗎?)。 我已經嘗試過相對路徑和絕對路徑。 我什至刪除了整個項目並使用 Visual Studio 項目創建向導重新生成它。 我不知道還能嘗試什么。

我在這里創建了一個最小的可重現示例。 您應該可以直接將其彈出到 Visual Studio 中。 除了管道,這個例子實際上只有 2 行長。 有誰知道我做錯了什么?

對於您的項目,請嘗試安裝依賴:Microsoft.EntityFrameworkCore.Sqlite 並在您的代碼中正確連接字符串,如下所示:

var db = new SqliteConnection("Data Source=file:testDB.sqllite;Mode=ReadWrite;");
db.Open();

Microsoft.Data.Sqlite 使用數據源中的文件名作為 URI: https://www.sqlite.org/c3ref/open.html#urifile3

我用 SQLliteStudio 創建了 sqllite 數據庫: https://github.com/pawelsalawa/sqlitestudio/releases

在項目中添加 testDB.sqllite 並設置屬性“復制到 Output 目錄”:“如果較新則復制”。

在這些步驟之后“打開”工作成功

就我而言,我不小心混淆了在我的解決方案中添加到項目中的 Nuget 包的版本。

我在.csproj中引用了以下內容:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.1"
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.1" />

將軟件包更新為:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.10" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.10"
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="3.1.10" />

在 UWP 項目中為我們解決了這個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM