我想用。像这样从存储的过程中调用sql脚本…
delimiter /// create procedure append_procedure() BEGIN \. test.sql; END; /// delimiter ;
我收到“无法打开’test.sql;’的消息” 我以这种方式运行时出错。我也尝试过!但随后出现权限被拒绝错误。但是,我无法消除;; 或整个事情坏了。有没有解决的办法?
我究竟做错了什么?
mysql客户端内置了一组命令。它们记录在“ mysql命令 ” 下。这些包括DELIMITER,SOURCE,HELP,CONNECT,USE,QUIT等。
mysql
的\.(或SOURCE)命令是这些建宏之一。 您不能以编程方式执行这些内置命令,也不能从存储过程中执行。
\.
SOURCE
就像试图使用C从C程序运行内置的UNIX shell一样execl()。
execl()
在网络浏览器中可能有不同的类比,您可以在其中键入about:由浏览器应用本身处理的特殊请求,例如“ ”;这些不会导致对远程网站的任何HTTP请求。
about:
另外,如果可以从存储过程中获取脚本也无济于事,因为脚本本身可能包含一堆由mysql客户端内置的命令,因此无法由存储过程运行。
另请参阅我对以下相关问题的回答: