用mysql_connection函数连接arduino和MySQL报错

问题详情:使用arduino IDE烧录至esp01s模块并连上WiFi后依然无法连接数据库(云服务器上的),且报错中显示的地址与我在代码中的地址不同(我的地址是43...*,但是报错中的地址是123.149.21.62,而且每次都一样),求老哥们解答!

注:1、WiFi可以连接,没问题。 2、数据库远程登陆权限已经设置,使用sqlyog可以正常访问。 3、在腾讯云控制台也已经将防火墙的3306端口打开。 4、数据库的账号密码确定没问题。


#include              // esp8266库
#include     // Arduino连接Mysql的库
#include 
 
IPAddress server_addr(**,**,**,**);   // 安装Mysql的电脑的IP地址
char user[] = "root";              // Mysql的用户名
char password[] = "**";        // 登陆Mysql的密码

char ssid[] = "Psyduck";         // WiFi名
char pass[] = "10001000";     // WiFi密码
WiFiClient client;                 // 声明一个Mysql客户端,在连接Mysql中使用
MySQL_Connection conn(&client);
MySQL_Cursor* cursor;    // 
 
int isConnection=0;
 
void setup()
{
  Serial.begin(9600);
  while (!Serial);      //  等待端口的释放
  Serial.printf("\nConnecting to %s", ssid);
  WiFi.begin(ssid, pass);         // 连接WiFi
  while (WiFi.status() != WL_CONNECTED) {       // 如果WiFi没有连接,一直循环打印点
    delay(500);
    Serial.print(".");
  }
 
  Serial.println("\nConnected to network");
  Serial.print("My IP address is: ");
  Serial.println(WiFi.localIP());     // 打印开发板的IP地址
 
  Serial.print("Connecting to SQL...  ");
  if (conn.connect(server_addr, 3306, user, password))         // 连接数据库
  {
    isConnection=1;
    Serial.println("成功连接数据库---OK.");   
  }else{
    isConnection=0;
    Serial.println("连接数据库失败---FAILED.");
  }
  cursor = new MySQL_Cursor(&conn);    // 创建一个数据库游标实例
}
 
void loop()
{

}

img

最终发现是库的问题,我将从arduino上下载的库删除后添加了github上的库之后就可以用了。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

根据您提供的信息,错误信息中显示的 IP 地址与代码中的 IP 地址不一致,这可能是因为您的代码中没有正确设置 MySQL 服务器的 IP 地址。您可以检查一下 server_addr 变量中的 IP 地址是否正确设置为您的 MySQL 服务器的 IP 地址。如果不确定您的 MySQL 服务器的 IP 地址,可以尝试在终端中使用 ping 命令查找 IP 地址。
此外,您可以尝试在代码中添加以下语句以打印出错误信息的详细信息,以便更好地定位问题:

Serial.println(conn.getLastError());

您可以将这行代码添加到连接 MySQL 服务器的代码块中,如下所示:

if (conn.connect(server_addr, 3306, user, password)) {
  isConnection = 1;
  Serial.println("成功连接数据库---OK.");
} else {
  isConnection = 0;
  Serial.print("连接数据库失败---FAILED. ");
  Serial.println(conn.getLastError());
}

这样,如果连接失败,您就可以在串口监视器中看到详细的错误信息,以便更好地定位问题。

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢