问题详情:使用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()
{
}
最终发现是库的问题,我将从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());
}
这样,如果连接失败,您就可以在串口监视器中看到详细的错误信息,以便更好地定位问题。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢