每当将记录插入到MySQL数据库中时,我都会尝试打开指示灯。
目前,我正在使用带有sys_exec()的触发器来运行一个MySQL脚本,这一切都很好,除非我想打开GPIO。
下面是两个python脚本(除了一个有GPIO设置和GPIO输出行被注释掉之外,其他都是一样的)。
import RPi.GPIO as GPIO
import time
pin = 21
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.HIGH)
time.sleep(0.25)
GPIO.output(pin, GPIO.LOW)这个脚本在python Shell中执行时运行良好,但在触发器执行它时会失败,并且sys_exec将返回256 (我相信这意味着它是假的?)
import RPi.GPIO as GPIO
import time
pin = 21
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# GPIO.setup(pin, GPIO.OUT)
# GPIO.output(pin, GPIO.HIGH)
time.sleep(0.25)
# GPIO.output(pin, GPIO.LOW)这个从触发器开始就运行得很好。
下面是我的触发器的代码:
DELIMITER $$
CREATE TRIGGER test_trig
AFTER INSERT ON LED_TABLE
FOR EACH ROW
BEGIN
DECLARE cmd CHAR(255);
DECLARE result int(10);
SET cmd = ('python /home/pi/test.py');
SET result = sys_exec(cmd);
END;
$$
DELIMITER ;有人知道为什么当我尝试从触发器激活GPIO引脚时会失败吗?
编辑:
所以这个问题是由mysql用户没有权限使用GPIO引脚引起的。我通过将mysql用户添加到gpio用户组解决了这个问题。
我在这里找到了答案:
https://www.raspberrypi.org/forums/viewtopic.php?f=27&t=16013
对于将来可能会遇到这个问题的人,您要运行的命令是:
usermod -a -G gpio mysql发布于 2018-02-11 18:27:21
我找到了答案,
所以这个问题是由mysql用户没有权限使用GPIO引脚引起的。我通过将mysql用户添加到gpio用户组解决了这个问题。
我在这里找到了答案:
https://www.raspberrypi.org/forums/viewtopic.php?f=27&t=16013
对于将来可能会遇到这个问题的人,您要运行的命令是:
usermod -a -G gpio mysql发布于 2018-02-07 04:27:25
很难知道您的特定设置可能发生了什么情况(您正在运行Raspbian吗?Python 2还是3?等)但有一件事需要检查,那就是用户权限。如果我没记错的话,在Raspbian的默认设置中,只有超级用户可以访问GPIO引脚;如果您以超级用户身份运行Python,但是您的MySQL进程在没有超级用户权限的情况下运行,这就可以解释这种差异。
https://stackoverflow.com/questions/48651230
复制相似问题