【问题标题】:Very Simple Arduino Update SQL Entry非常简单的 Arduino 更新 SQL 条目
【发布时间】:2015-12-30 08:18:21
【问题描述】:

我有一个非常简单的 Arduino 项目,我正在努力解决。
我想使用带有以太网屏蔽的 Arduino 更新 MySQL 中的条目。我正在为 MySQL 服务器使用 WAMP。最终,我想每 5 分钟将温度读数发布到 mysql 服务器,但这不是我目前关心的问题。我不是 Arduino 或 MySQL 的老手,所以我想问问专业人士。

WAMP IP 地址:192.168.0.89
Arduino IP地址:192.168.0.177

MySQL 数据库。
数据库用户名:“root”
数据库密码:""
数据库名称:“wordpress”
数据库表:“读数”
要更新的表字段:“voltage1”
查询:

"更新读数 SET voltage1='12v' WHERE device_id=T1;"

Arduino 草图: (获取自:https://launchpad.net/mysql-arduino

#include "SPI.h"
#include "Ethernet.h"
#include "sha1.h"
#include "mysql.h"

byte mac_addr[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x69, 0xAC };
byte ip_addr[] = { 192, 168, 0, 177 };
byte dns_addr[] = { 192, 168, 0, 37 };
byte gateway_addr[] = { 192, 168, 0, 37 };
byte netmask[] = { 255, 255, 255, 0 };
IPAddress server_addr(192, 168, 0, 89);

Connector my_conn; // The Connector/Arduino reference

char user[] = "root";
char password[] = ""; //the credentials are correct in my code
char INSERT_SQL[] = "UPDATE readings SET voltage1='99' WHERE device_id=T1;";

void setup() {
Serial.begin(115200);
Ethernet.begin(mac_addr, ip_addr, dns_addr, gateway_addr, netmask); //Yes, I know this is way more than necessary, but just to play it safe
delay(1000);
Serial.print("IP: ");
Serial.println(Ethernet.localIP()); // debugging
Serial.println("Connecting...");
if (my_conn.mysql_connect(server_addr, 3306, user, password)) //connect to database
{
delay(500);
my_conn.cmd_query(INSERT_SQL); //Possible problem here, i want to update not insert.
Serial.println("Query Success!");
}
else
Serial.println("Connection failed.");
}

void loop() {
}

串行监视器:

IP:192.168.0.177
正在连接...

它永远不会连接。

【问题讨论】:

标签: mysql arduino


【解决方案1】:

我可以告诉你,你的 SQL 可能是错误的。

UPDATE readings SET voltage1='12v' WHERE device_id=T1;

应该是

UPDATE readings SET voltage1='12v' WHERE device_id='T1';

对不起,我不知道其他问题,如连接。

关于

//Possible problem here, i want to update not insert.

INSERT_SQL 只是一个变量的名称,您可以使用 BOB 作为名称,它应该仍然有效,将其重命名为 QUERY 并放松。

官方示例与你的代码类似:http://bazaar.launchpad.net/~chuck-bell/mysql-arduino/trunk/view/head:/examples/dht22_sensor_node.cpp

还有一件事,你确定在服务器上打开了 3306 端口?

我相信有一种安全措施可以防止除 localhost 之外的所有人运行 mysql 命令。

端口应该打开 + mysql 应该允许来自不是 127.0.0.1 的 IP 的连接。

【讨论】:

  • 查看更新后的答案,其中包含一些可能已实施的安全措施。
  • 是的,端口已打开。我会检查任何安全措施并报告,谢谢。
  • 谁啊!米海你beut!它现在连接。
  • 现在我只需要修复下一个错误:错误:29 = 未选择数据库。
  • 你可以做一个 UPDATE DBNAME.readings SET voltage1='12v' WHERE device_id='T1';
猜你喜欢
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多