You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS/Linux下dotnet ef scaffold连接SQL Server时sa用户登录失败

解决MacOS/Linux下dotnet ef scaffold密码含$导致登录失败的问题

这个问题我碰到过好几次了——核心原因是Mac/Linux的shell(比如bash、zsh)会把$当成变量解析的标记,而不是密码里的普通字符。你直接写$MYPASSWORD的时候,shell会尝试去找名为MYPASSWORD的环境变量,找不到就把这部分替换成空字符串,自然就登录失败了。下面给你两种靠谱的解决办法:

方法一:用单引号包裹整个连接字符串

Unix shell里的单引号会完全保留字符串的字面量,不会解析任何变量或特殊字符。把你的连接字符串整个用单引号包起来,就能让$原封不动地传给dotnet命令:

dotnet ef dbcontext scaffold 'Server=.;Database=MY_DB;Trusted_Connection=False;User ID=sa;Password=$MYPASSWORD' Microsoft.EntityFrameworkCore.SqlServer -o Models -c "DbContext"

方法二:用反斜杠转义$字符

如果你更习惯用双引号包裹字符串,可以在$前面加反斜杠\,告诉shell这是一个普通字符,不要解析它:

dotnet ef dbcontext scaffold "Server=.;Database=MY_DB;Trusted_Connection=False;User ID=sa;Password=\$MYPASSWORD" Microsoft.EntityFrameworkCore.SqlServer -o Models -c "DbContext"

验证方法

执行命令前,可以先用echo测试一下连接字符串是否正确输出:

echo 'Server=.;Database=MY_DB;Trusted_Connection=False;User ID=sa;Password=$MYPASSWORD'

如果输出里的$MYPASSWORD完全和你输入的一致,说明shell不会再解析它了,这时候再执行dotnet命令就没问题了。

内容的提问来源于stack exchange,提问作者Elertan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:49:18