当我使用命令行(mysql.exe)执行时,下面的代码可以正常工作,但是当我在phpmyadmin中使用SQL Query或使用ScriptRunner(Java)执行时,这个代码不正确。
错误:错误语法执行DELIMITER $$
我该如何解决这个问题?
-- Procedures
--
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `upload_photo`(
IN owner_id int, IN photo_name text, IN photo_url text, IN thumbnail text
)
begin
declare inserted_id int unsigned default 0;
INSERT INTO photo(`owner_id`, `photo_name`, `photo_url`, `thumbnail`) VALUES(owner_id, photo_name, photo_url, thumbnail);
set inserted_id = last_insert_id();
select * from photo where photo_id = inserted_id;
end$$
--
DELIMITER ;
答案 0 :(得分:1)
PhpMyAdmin使用的mysqli不支持分隔符。看看是否需要分隔符。我正在运行一个包含多行的脚本,我的MySQL以分号作为分隔符运行所有这些脚本。
答案 1 :(得分:0)
我遇到了一个类似的问题,当我通过我的SQL客户端运行它时,我的DELIMITER语句在通过Flyway运行时破坏了。
问题是缩进或隐藏的特殊字符,因为格式化IDE中的代码解决了这个问题。