我正在尝试在
.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");
}
}
你知道这可能是什么原因吗?
LocalDb 是 SQL Server Express Edition 的打包机制,仅适用于 Windows。 在 Ubuntu 上,您可以安装常规 SQL Server Express 版本。
https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-overview
以下是 Ubuntu、Red Hat 和 SUSE 的安装脚本。
或者使用 Docker 镜像:
https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker
我从 Windows 机器切换到 MacBook Pro 时遇到了这个问题。正如其他人指出的那样,LocalDB 适用于 SQL Server Express Edition(适用于 Windows)。
要解决此问题,您需要安装 SQL Server 并使用 localhost 而不是 LocalDB。
我在 Ubuntu V 20.04 上运行 Asp.Net Core 6 Web 应用程序时遇到问题(在 ubuntu 上本地安装了 sqlserver)。
解决这个问题: 我必须更改连接字符串以显式指定
userid
和 password
设置 Encrypt=false
。另外,我必须在连接字符串中使用 (localdB)
,而不是 localhost
请参阅更多信息此处
“服务器=localhost;数据库=BethanysPieShop8854;用户ID = sa;密码=passw0rd!;MultipleActiveResultSets = true;加密= false”
对于基于 Arch 的 Linux 系统,mssql-server 软件包似乎是最佳选择。
正如@David Browne - 微软表示 LocalDb 目前仅在 Windows 中可用。
这就是我在 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
然后您可以验证它是否适用于此查询:
SELECT name
FROM sys.databases;
GO
https://learn.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker