此平台不支持LocalDB

问题描述 投票:0回答:5

我正在尝试在

.Net Core 2.0
上启动
Ubuntu 17.04
应用程序。我之前在Windows 10上开发过,效果很好。问题是,当我运行
dotnet ef database update
时,我得到下一个异常:

System.PlatformNotSupportedException: LocalDB is not supported on this Platform.

这是我的

DbContext

public class NutritionContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Meal> Meals { get; set; }
    public DbSet<Dish> Dishes { get; set; }
    public DbSet<Product> Products { get; set; }
    public DbSet<Plan> Plans { get; set; }
    public DbSet<MealDish> MealDishes { get; set; }
    public DbSet<Ingredient> Ingredients { get; set; }
    public DbSet<PlanDetail> PlanDetails { get; set; }
    public DbSet<UserPlan> UserPlans { get; set; }
    public DbSet<AuthUser> AuthUsers { get; set; }

    public NutritionContext()
    {
    }

    public NutritionContext(DbContextOptions options) : base(options)
    {           
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(
            "Server=(localdb)\\mssqllocaldb;Database=NutritionDatabaseNew;Trusted_Connection=True;MultipleActiveResultSets=true");
    }

}

你知道这可能是什么原因吗?

c# database entity-framework .net-core .net-core-2.0
5个回答
43
投票

LocalDb 是 SQL Server Express Edition 的打包机制,仅适用于 Windows。 在 Ubuntu 上,您可以安装常规 SQL Server Express 版本。

https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-overview

以下是 UbuntuRed HatSUSE 的安装脚本。

或者使用 Docker 镜像:

https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker


8
投票

我从 Windows 机器切换到 MacBook Pro 时遇到了这个问题。正如其他人指出的那样,LocalDB 适用于 SQL Server Express Edition(适用于 Windows)。

要解决此问题,您需要安装 SQL Server 并使用 localhost 而不是 LocalDB。


7
投票

我在 Ubuntu V 20.04 上运行 Asp.Net Core 6 Web 应用程序时遇到问题(在 ubuntu 上本地安装了 sqlserver)。 enter image description here

我有一个连接字符串集 enter image description here

解决这个问题: 我必须更改连接字符串以显式指定

userid
password
设置
Encrypt=false
。另外,我必须在连接字符串中使用
(localdB)
,而不是
localhost
请参阅更多信息此处

“服务器=localhost;数据库=BethanysPieShop8854;用户ID = sa;密码=passw0rd!;MultipleActiveResultSets = true;加密= false


0
投票

对于基于 Arch 的 Linux 系统,mssql-server 软件包似乎是最佳选择。


0
投票

正如@David Browne - 微软表示 LocalDb 目前仅在 Windows 中可用。

https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver16#installation-media

这就是我在 Docker Linux 容器映像上运行 SQL Server 的方式。

docker pull mcr.microsoft.com/mssql/server:2022-latest

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YOUR-PASSWORD>" -p 1433:1433 --name sql1 --hostname sql1 -d mcr.microsoft.com/mssql/server:2022-latest

连接到 SQL Server:

docker exec -it sql1 "bash"

/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "<YOUR-PASSWORD>"

如果您收到此错误:

Sqlcmd:错误:适用于 SQL Server 的 Microsoft ODBC 驱动程序 18:SSL 提供程序: [错误:0A000086:SSL 例程::证书验证失败:自签名 证书]。

然后添加一个

-C
,相当于
TRUSTSERVERCERTIFICATE = true

/opt/mssql-tools18/bin/sqlcmd -S localhost sa -P "<YOUR-PASSWORD>" -C

https://learn.microsoft.com/en-us/sql/tools/sqlcmd/sqlcmd-utility?view=sql-server-ver16&tabs=go%2Clinux&pivots=cs1-bash#-c

然后您可以验证它是否适用于此查询:

SELECT name
FROM sys.databases;
GO

enter image description here

https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker

© www.soinside.com 2019 - 2024. All rights reserved.