我在我的项目中使用代码优先方法。但是,当我尝试使用“update-database”命令运行 db-migrations 时,出现空引用异常,并且当我运行应用程序时,出现以下配置错误: 使用方法“mysql_native_password”对用户“root”的主机“localhost”进行身份验证失败,并显示消息:未知数据库“xxx”。
这是连接字符串:
<add name="DefaultConnectionString" connectionString="server=localhost;port=3306;Database=cps;uid=root;pwd=root;" providerName="MySql.Data.MySqlClient" />
P.S:它在其他系统上运行良好。
我针对以下错误得到的解决方案。
使用方法“mysql_native_password”对用户“root”的主机“localhost”进行身份验证失败,并显示消息:用户“root”@“localhost”的访问被拒绝(使用密码:YES)
<add name="constring" connectionString="Server=localhost;Uid=root;Database=databasename;Port=3306;" providerName="MySql.Data.MySqlClient"/>
=> 只需删除密码即可
=> 如果您有 2 个具有不同端口号的本地服务器,只需添加它,否则默认情况下将需要 3306
您的连接字符串需要一个名为
cps
的 MySQL 数据库。您似乎尚未在本地 MySQL 服务器上创建该数据库。
专业提示:请务必仔细阅读错误消息文本,问问自己“这意味着什么?”
使用方法“mysql_native_password”对用户“root”的主机“localhost”进行身份验证失败,并显示消息:用户“root”@“localhost”的访问被拒绝(使用密码:YES)
来自
公共字符串strconn =“SERVER = localhost;DATABASE=restaurant;UID = root;pwd=12345678;转换零日期时间=True”;
成为
public string strconn = "SERVER =127.0.0.1 ;DATABASE=restaurant;UID = root;pwd=12345678;转换零日期时间=True"; 将连接字符串中的 localhost 修复为 127.0.0.1
感谢所有答案,但就我而言,@GirishBabuC 表示其端口,并且需要在连接字符串中附加端口,以防您使用其他默认端口。
<add name="constring" connectionString="Server=localhost;Uid=root;Database=databasename;Port=3307;" providerName="MySql.Data.MySqlClient"/>
我的情况是 3307。
安装时要求端口。
此问题可能会出现,具体取决于目标 MySQL 的版本。欢迎您尝试此解决方案,看看它是否适合您。不要使用
Uid=*;Pwd=*;
格式,而是使用 user=*;password=*;
格式。
原始连接字符串:
Server=localhost;Port=3306;Database=databasename;Uid=sqltracking;Pwd=sqltracking;
一个有效的
server=localhost;port=3306;database=databasename;user=sqltracking;password=sqltracking;
第一种方法适用于MySql 8,但不适用于MySql 5。
我还没有深入研究这些连接字符串配置背后的文档,但是,我注意到 MySQL 5.7 和 8.0 在某些条件下存在差异。尽管诚然没有花很多时间来弄清楚为什么有时会发生这种情况。
此外,请记住在进行任何权限更改后对 MySQL 实例执行
FLUSH PRIVILEGES
操作。这也可能有效果。
将 ;SslMode=None 添加到 ConnString 部分。