Mysql sys_exec Can';t打开共享库';lib#mysqludf#u sys.so';(错误号:11,错误的ELF类:ELF类32)
我尝试使用sys_exec在unix上运行本机命令,但我尝试从 进入Mysql sys_exec Can';t打开共享库';lib#mysqludf#u sys.so';(错误号:11,错误的ELF类:ELF类32),mysql,mariadb,Mysql,Mariadb,我尝试使用sys_exec在unix上运行本机命令,但我尝试从 进入/usr/lib/x86_64-linux-gnu/mariadb18/plugin但是当我尝试运行以下命令时: create function sys_exec返回int soname'lib_mysqludf_sys.so' 我收到的答复如下: 错误1126(HY000):无法打开共享库'lib_mysqludf_sys.so'(错误号:11,错误的ELF类:ELFCLASS32) 这是MariaDB 15.1。我找到了一种
/usr/lib/x86_64-linux-gnu/mariadb18/plugin
但是当我尝试运行以下命令时:
create function sys_exec返回int soname'lib_mysqludf_sys.so'代码>
我收到的答复如下:
错误1126(HY000):无法打开共享库'lib_mysqludf_sys.so'(错误号:11,错误的ELF类:ELFCLASS32)
这是MariaDB 15.1。我找到了一种解决方法:
首先,我们需要在unix上安装defaultlibmysqlclient-dev
运行命令:apt get install default libmysqlclient dev
然后从以下位置下载存储库:
下载完成后,我们可以运行以下命令:
gcc-DMYSQL\u DYNAMIC\u PLUGIN-fPIC-Wall-m64-I/usr/include/mysql-I.-shared lib\u mysqludf\u sys.c-o lib\u mysqludf\u sys.so
然后将lib\u mysqludf\u sys.so
复制到MariaDB/MySQL plugins文件夹中,如何知道哪个文件夹是该文件夹
MariaDB [(none)]> SHOW VARIABLES LIKE 'plugin_dir';
+---------------+---------------------------------------------+
| Variable_name | Value |
+---------------+---------------------------------------------+
| plugin_dir | /usr/lib/x86_64-linux-gnu/mariadb18/plugin/ |
+---------------+---------------------------------------------+
1 row in set (0.00 sec)
在我的情况下,我的命令应该是:
cp lib\u mysqludf\u sys.so/usr/lib/x86\u 64-linux-gnu/mariadb18/plugin/
在那之后,我们可以创建触发器并运行我们需要在自己的OS:D上运行的所有东西
CREATE TABLE `trig_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`random_data` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
);
DELIMITER @@
CREATE TRIGGER trig_test
AFTER INSERT ON `trig_test`
FOR EACH ROW
BEGIN
DECLARE cmd CHAR(255);
DECLARE result int;
SET cmd=CONCAT('node /tmp/script/script.js >> /tmp/script/result.txt');
SET result = sys_exec(cmd);
END;
@@
DELIMITER ;
INSERT INTO trig_test
(random_data)
VALUES('GOOOO!!!');
如果无法运行检查权限所需的命令,我将我的所有者和组从/tmp更改为tests
chown-R mysql.mysql/tmp
然后一切正常 您是否愿意共享64位lib_mysqludf_sys.so?谢谢这个插件甚至可以在x86或64位上运行,因为我们的服务器都是64位的,并且工作正常,试试这个,告诉我它是否正确,否则我们可以一起处理这个问题!!:)我做了,但我还是犯了错误。我正在使用Centos 7 x64和15.1发行版5.5.64-MariaDB
您的方式工作,但似乎无法将变量从触发器传递到cmd,请参阅Github上的详细信息