我利用 Entity Framework 6 开发了一个 C#/WPF 应用程序来连接到本地 MySQL 数据库。该应用程序在本地计算机上运行时运行良好。但是,当我在其他系统上安装该应用程序并运行它时,它在需要访问数据库时崩溃了。
捕获异常并弹出消息,我收到消息“值不能为空。参数名称:源。”从这篇文章,Value cannot be null. Parameter name: source ,我认为这是因为我的连接字符串错误或者我没有正确执行某些操作来允许远程数据库访问。
这是我在 App.config 中的连接字符串:
connectionString="metadata=res://*/Database.csdl|res://*/Database.ssdl|res://*/Database.msl;provider=MySql.Data.MySqlClient;提供程序连接字符串= “服务器=(ip地址);用户id=root;密码=密码;persistsecurityinfo=True;数据库=实践””
我使用的IP地址是通过cmd => ipconfig => IPv4获取的本地系统的真实IP地址。
经过大量谷歌搜索和堆栈溢出搜索后,我还没有找到解决方案。我不希望其他计算机上有数据库的本地实例,它们都应该远程连接到本地计算机上托管的数据库。我认为连接应该不会有任何问题,因为所有系统都位于同一网络上,并且我可以从其他计算机上使用本地数据库对计算机执行 ping 操作。
我尝试使用以下语句对 MySQL 中的其他计算机进行远程访问:
创建由 '' 标识的用户 '%'@'(IPADDRESS)';
使用授予选项将 *.* 上的所有权限授予 '%'@'(IPADDRESS)';
还尝试按照 Asaf 在这篇文章中的解决方案(WPF application doesn't work in other computers)。然而,这两种方法都不适合我。
如果有人可以解释如何发布可访问 MySQL 数据库的 C#/WPF 应用程序,那就太好了。
编辑:进一步编辑代码以查看异常后,我收到错误“底层提供程序在打开时失败”。现在就来研究一下。
编辑:解决了!谢谢你。需要以“root”身份启用远程连接( How to allow remote connection to mysql )、刷新权限并重新启动 MySQL 服务器。之后,应用程序就成功了。
最佳答案
感谢 Obl,我通过以“root”身份启用远程连接(How to allow remote connection to mysql)解决了这个问题。之后,只需刷新权限并重新启动 MySQL 服务器即可。
关于在另一台计算机上使用时,具有本地数据库的 C# WPF 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45246995/