在尝试开发应用程序之前,我一直在尝试一些初始代码。 我大概一年前就已经进行了这项工作,所以有些事情告诉我有一个更新/版本问题。 但是任何帮助都是好的。
我有一个用apache,MariaDB,php等设置的树莓派。我有一个运行的简单网页,所以apache很好,我还有另一个从表中提取数据的网页,所以MariaDB很好(很好,给定我的问题)。我已经设置了myphpadmin,并且可以登录以创建新的数据库和用户等。
现在,我想让一个UWP应用与我的pi上托管的数据库进行交互。我只为特定的数据库使用SELECT和INSERT创建了一个新用户(希望这可以减少安全性问题,但我是新手,所以也许我希望如此。)
然后我也找到了mariadb配置文件,并注释了绑定地址行。文件中不再包含跳过网络行,因此可以忽略该行。 (这就是文档所说的允许远程连接的内容。
我在路由器上打开了端口3306,我也有一个域名,并使用no-ip,但是我认为这一切都很好,因为apache运行正常。看到有人在谈论SSH,我更改了ssh端口,但我认为这不是问题。
然后是UWP。
上次尝试此操作时,我不得不使用MySQL Connector Net 6.7.9,因为较新的版本不适用于RT。因此,我已将其添加到项目参考中。
现在为了简单测试连接,我有一个按钮和TextBlock,单击该按钮以尝试连接并输出异常/结果。 尝试过使用conn字符串生成器以及简单的字符串,都行不通。
private void ConnectDatabase_Click(object sender, RoutedEventArgs e)
{
string ConnString;
MySqlConnection Conn;
MySqlConnectionStringBuilder Csb = new MySqlConnectionStringBuilder();
Csb.Server = "http://rnd-domain.me";
Csb.Port = 3306;
Csb.UserID = "usr";
Csb.Password = "passwd";
Csb.Database = "testdb";
ConnString = "server=http://rnd-domain.me;database=testdb;uid=usr;pwd=passwd;";
Conn = new MySqlConnection(ConnString);
try
{
Conn.Open();
DbUpdateText.Text = "connected";
Conn.Close();
}
catch(Exception ex)
{
DbUpdateText.Text = ex.Message;
}
}
当我单击按钮时,ex.Message为“无法连接到任何指定的MySQL主机”。 该应用程序不会引发任何错误,只是此无用的消息。
我已经在Google上进行了搜索,并浪费了80%的周日时间来尝试执行此操作。我添加了sslmode = none,charset = utf8,port = 3306。我尝试使用server = localhost或当前IP,甚至使用mariadb主用户(不是root)。
可能是什么问题?
谢谢。
编辑: 我只是使用了pi的内部IP并得到了一个新的ex.Message,对SSl理解了这一点,添加了sslmode = none并且一切正常。
所以现在它只是解决域名问题?
答案 0 :(得分:1)
您的连接字符串不太正确。
您可能想要这样:
server=rnd-domain.me;database=testdb;uid=usr;pwd=REDACTED;
在MySQL连接字符串中提及http://
毫无意义,因为该连接未使用HTTP协议。而是使用MySQL协议。
答案 1 :(得分:0)
问题是在家庭网络内部都使用了PC(客户端)和raspi(服务器)。
当我将主机更改为raspi的内部IP时,一切正常。