两年多来,我一直在为我的儿子做一个项目,在那里我使用Raspberry Pi 2运行Raspbian Jessie来控制他阁楼里鼓风机的速度。这个想法是通过阁楼通风来调节炎热天气的温度,同时不要过度通风和浪费能源。鼓风机控制程序已成功运行了大约一年。在过去一年的大部分时间里,我一直在尝试添加一个MySQL数据库来维护过去24小时内10个参数的288条记录(每5分钟一条记录),所以在任何时候,我都可以查看这些数据并查看系统一直在执行。由于系统连续运行(24/365),我担心闪存卡的紧凑寿命。由于数据仅涵盖最后一天并在一天内重新创建,因此我并不担心电源故障会导致丢失。 在启动时,我运行一个例程(Main.py),它将MySQL数据文件和空白表复制到RAM,MySQL可以正常工作。接下来,我修改了Main.py,将mysqld.sock和mysqld.pid放在RAM中。我在/etc/mysql/my.cnf和/etc/mysql/dedian.cnf中修改了以下项目,如下所示: /etc/mysql/my.cnf
[client], [mysqld_safe]
Original: socket = /var/run/mysqld/mysqld.sock
Modified: socket = /var/tmp/run/mysqld/mysqld.sock
[mysqld]
Original: pid-file = /var/run/mysqld/mysqld.pid
Modified: pid-file = /var/tmp/run/mysqld/mysqld.pid
Original: socket = /var/run/mysqld/mysqld.sock
Modified: socket = /var/tmp/run/mysqld/mysqld.sock
Original: datadir = /var/lib/mysql
Modified: datadir = /var/tmp/mysql/ControlData
Note: ControlData is the name of my MySQL database
/etc/mysql/debian.cnf
[client], [mysql_upgrade]
Original: socket = /var/run/mysqld/mysqld.sock
Modified: socket = /var/tmp/run/mysqld/mysqld.sock
对/etc/mysql/my.cnf和/etc/mysql/dedian.cnf执行上述修改后,现在当我运行BlowerControl时,出现以下错误:
追踪(最近一次通话): File" /home/pi/RasPiConnectServer/local/BlowerControl.py" ;, 404行in con = mdb.connect(host =" localhost",user =" ControlMonitor",passwd =" 02121945",db =" ControlData") 文件" /usr/lib/python2.7/dist-packages/MySQLdb/ init .py",第81行,在Connect中 return Connection(* args,** kwargs) 文件" /usr/lib/python2.7/dist-packages/MySQLdb/connections.py",第187行, init super(Connection,self)。 init (* args,** kwargs2) OperationalError:(2002,"无法通过套接字连接到本地MySQL服务器' /var/run/mysqld/mysqld.sock'(2)")
似乎有些东西仍在告诉MySQL在/var/run/mysqld/mysqld.sock而不是/var/tmp/run/mysqld/mysqld.sock中建立套接字连接。我已经做了大量的搜索并得出结论,问题可能与/usr/lib/python2.7/dist-packages/MySQLdb/connections.py中的** kwargs2有关。我在这里和其他地方尝试过很多变化而没有成功。
我非常感谢任何人都可以提供帮助。如果有人愿意提供帮助,我很乐意通过电子邮件发送我的BlowerControl.py和Main.py程序。