【问题标题】:How can I connect to database from Arduino?如何从 Arduino 连接到数据库?
【发布时间】:2019-10-16 21:00:09
【问题描述】:

我想将数据从数据库传输到 Arduino。为此,我在 Arduino 中使用 MYSQL_Connector 库。但我收到这样的错误:“连接失败”。我无法连接到数据库。另外,我正在使用 XAMPP 服务器。

我检查了 MYSQL 服务器的 IP 地址、端口和用户名密码。

#include <SPI.h>
#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr(x,x,x,x);  // the IP address to that of the system on which my MySQL server is set up
char user[] = "user";              // MySQL user login username
char password[] = "1234";        // MySQL user login password


// Sample query
char query[] = "SELECT id FROM world.city";

EthernetClient client;
MySQL_Connection conn((Client *)&client);

void setup() {
  Serial.begin(9600);
  while (!Serial); // wait for serial port to connect
  Ethernet.begin(mac_addr);
  Serial.println("Connecting...");
  if (conn.connect(server_addr, 8080, user, password)) {
    delay(1000);
  }
  else
    Serial.println("Connection failed.");
}

【问题讨论】:

  • 您已将 MySQL 服务器的 ip 地址设置为 localhost。这告诉 Arduino MySQL 服务器是在 Arduino 本身上设置的。将 IP 地址更改为设置 MySQL 服务器的系统的 IP 地址,并确保系统和 Arduino 在同一网络上
  • 我已将 IP 地址更改为设置 MySQL 服务器的系统的 IP 地址。 Arduino 和系统在同一个网络上。我关注了这个问题。但我仍然无法连接。
  • 另一个错误来源可能是您尝试连接到 MySQL 服务器的端口。默认端口是 3306,而您输入的是 8080
  • 是的,我也进入了3306端口。但仍然无法连接:(我也改变了mysql的权限。但我没有得到结果。
  • 我能想到的唯一可能导致连接失败的问题是你没有给它足够的时间。不要只将 Ethernet.begin() 放在 while 循环中,而是将整个块放在并包括 conn.connect()

标签: mysql arduino ethernet


【解决方案1】:

我已经解决了这个问题。问题是您还需要授予用户访问您想要访问的任何数据库的权限。首先,您需要创建用户。您可以使用下面的链接。

https://st2.ning.com/topology/rest/1.0/file/get/2053761171?profile=original

#include <Ethernet.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr(x,x,x,x);  //the IP address to that of the system on which my MySQL server is set up
char user[] = "bob";              // MySQL user login username
char password[] = "secret";        // MySQL user login password


// Sample query
char query[] = "SELECT id FROM world.city";

EthernetClient client;
MySQL_Connection conn((Client *)&client);

void setup() {
  Serial.begin(9600);
  while (!Serial); // wait for serial port to connect
  Ethernet.begin(mac_addr);

  //while(!conn.connect(server_addr, 3306, user, password));

  Serial.println("Connecting...");
  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
  }
  else
    Serial.println("Connection failed.");
}

【讨论】:

    猜你喜欢
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2017-05-18
    • 2010-11-23
    相关资源
    最近更新 更多