繁体   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