我使用EntityFramework6开发了一个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;provider connection string="server=(ipAddress);user id=root;password=password;persistsecurityinfo=True;database=practice""中的连接字符串
我使用的ip地址是从cmd => ipconfig => IPv4获得的本地系统的实际ip地址。
在大量搜索和搜索堆栈溢出之后,我还没有找到解决这个问题的方法。我不想要其他计算机上数据库的本地实例,它们都应该远程连接到本地计算机上承载的数据库。我认为不应该有任何连接问题,因为所有的系统都在同一个网络上,我可以从其他计算机与本地数据库连接。
我尝试使用以下语句远程访问MySQL中的其他计算机:在本文中,CREATE USER '%'@'(IPADDRESS)' IDENTIFIED BY ''; GRANT ALL PRIVILEGES ON *.* TO '%'@'(IPADDRESS)' WITH GRANT OPTION;也尝试遵循Asaf的解决方案(WPF application doesn't work in other computers)。不过,这两个人都不适合我。
如果有人能够解释如何发布访问MySQL数据库的C#/WPF应用程序,那就太好了。
编辑:在更多地编辑代码以查看异常之后,我得到了“基础提供者在Open上失败”的错误。现在开始调查。
编辑:解决了!谢谢你告诉我。需要启用远程连接为“根”(How to allow remote connection to mysql),刷新权限,并重新启动MySQL服务器。之后,应用程序起了作用。
发布于 2017-07-21 22:27:05
多亏了Obl,我以“根”(How to allow remote connection to mysql)的形式启用远程连接解决了这个问题。之后,只需刷新特权并重新启动MySQL服务器。
https://stackoverflow.com/questions/45246995
复制相似问题