我需要在命令行中创建一个MySQL触发器
这个sql在mysql控制台中运行良好:
$sql = "
USE DB1;
DROP TRIGGER IF EXISTS my_trigger;
DELIMITER $$
CREATE TRIGGER my_trigger AFTER UPDATE ON tbl1
FOR EACH ROW BEGIN
INSERT INTO DB2.tbl2 (column1)
VALUES (1234);
END$$
DELIMITER ;
";
$cmd = 'mysql -sse "'.$sql.'";';
//put all in one line to avoid shell errors
$cmd = preg_replace('/\r\n|\r|\n|\t|\s+/m', " ", $cmd);
exec("($cmd) 2>&1", $output, $result);
这抛出了一个MySQL错误
第1行出现错误1064(42000):SQL语法中有错误;检查与您的MySQL服务器版本对应的手册,在第1行的“END”附近使用正确的语法
我也试过DELIMITER //
。相同错误
1条答案
按热度按时间tzdcorbm1#
**解决方案:**将
DELIMITER $$
更改为\d $$
(花了两天时间后:()在php中必须使用
\\d $$
似乎当我们把所有的都放在一行时,只会产生简写形式的
\d