Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 创建触发器时出现错误的进程_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql 创建触发器时出现错误的进程

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

我试图在phpmyadmin中创建一个触发器,但我得到一个错误

当我在SQL终端中运行此查询时,它工作正常。但是在触发器创建中,我得到了错误的进程错误,查询失败了

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之外重命名该文件。