Mysql 创建触发器时出现错误的进程
我试图在phpmyadmin中创建一个触发器,但我得到一个错误 当我在SQL终端中运行此查询时,它工作正常。但是在触发器创建中,我得到了错误的进程错误,查询失败了Mysql 创建触发器时出现错误的进程,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我试图在phpmyadmin中创建一个触发器,但我得到一个错误 当我在SQL终端中运行此查询时,它工作正常。但是在触发器创建中,我得到了错误的进程错误,查询失败了 set @sql = CONCAT( "SELECT * INTO OUTFILE 'C:/database/",DATE_FORMAT(NOW(), '%m-%Y'), ".csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""' LINES TERMINAT
set @sql = CONCAT(
"SELECT * INTO OUTFILE 'C:/database/",DATE_FORMAT(NOW(), '%m-%Y'),
".csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '""' LINES TERMINATED BY '\r\n ' FROM weekevents"
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
在MySQL中,触发器中不允许使用动态SQL 发件人: SQL prepared语句PREPARE、EXECUTE、DEALLOCATE PREPARE可用于存储过程,但不能用于存储函数或触发器。因此,存储的函数和触发器不能使用动态SQL,即将语句构造为字符串然后执行它们 您实际上应该得到以下错误: 1336-存储函数或触发器中不允许使用动态SQL
在MySQL中,触发器中不允许使用动态SQL 发件人: SQL prepared语句PREPARE、EXECUTE、DEALLOCATE PREPARE可用于存储过程,但不能用于存储函数或触发器。因此,存储的函数和触发器不能使用动态SQL,即将语句构造为字符串然后执行它们 您实际上应该得到以下错误: 1336-存储函数或触发器中不允许使用动态SQL
这对我来说似乎不清楚。。。您所说的要创建的触发器与显示的将数据从数据库导出到CSV文件的代码之间的关系是什么?当我更新表时,我希望创建新的CSV文件,我真的不知道为什么在创建触发器时会出现错误OK。您需要向我们显示整个触发代码,以及您得到的确切错误消息。在我的帖子中,这是整个触发代码,错误消息是:处理请求时发生一个或多个错误:以下查询失败:创建定义器=root@localhost在每个行集合@sql=concatSELECT*插入到输出文件“C:/database/,DATE\u FORMATNOW,“%m-%Y”,.csv”字段后,触发Exsport Insert,'可选地由来自WeekeEvents的以'\r\n'结尾的''行包围;从@sql准备stmt;执行stmt;解除分配准备stmt;MySQL说,当我从@sql中删除PREPARE stmt时;执行stmt;解除分配准备stmt;扳机没问题,但不起作用我看不清楚。。。您所说的要创建的触发器与显示的将数据从数据库导出到CSV文件的代码之间的关系是什么?当我更新表时,我希望创建新的CSV文件,我真的不知道为什么在创建触发器时会出现错误OK。您需要向我们显示整个触发代码,以及您得到的确切错误消息。在我的帖子中,这是整个触发代码,错误消息是:处理请求时发生一个或多个错误:以下查询失败:创建定义器=root@localhost在每个行集合@sql=concatSELECT*插入到输出文件“C:/database/,DATE\u FORMATNOW,“%m-%Y”,.csv”字段后,触发Exsport Insert,'可选地由来自WeekeEvents的以'\r\n'结尾的''行包围;从@sql准备stmt;执行stmt;解除分配准备stmt;MySQL说,当我从@sql中删除PREPARE stmt时;执行stmt;解除分配准备stmt;触发器还可以,但不起作用谢谢,但当我放置代码时,仍然会出现相同的错误。当我添加时:从@sql准备stmt;执行stmt;解除分配准备stmt;我得到失败的错误,没有它,我可以添加一个触发器,但什么也没有happens@drorshalit字体我改变了我的答案。。。看一看嗯,我明白了。。。你知道我该怎么做吗?如何在更新时导出csv?@drorshalit:您可以使用常规SQL语句导出到csv:这将为您提供一个恒定的文件名。您需要在MySQL之外重命名该文件。谢谢,但是当我放置您的代码时,仍然会出现相同的错误。当我添加时:从@sql准备stmt;执行stmt;解除分配准备stmt;我得到失败的错误,没有它,我可以添加一个触发器,但什么也没有happens@drorshalit字体我改变了我的答案。。。看一看嗯,我明白了。。。你知道我该怎么做吗?如何在更新时导出csv?@drorshalit:您可以使用常规SQL语句导出到csv:这将为您提供一个恒定的文件名。您需要在MySQL之外重命名该文件。