mysql中的DELIMITER不起作用

时间:2013-08-07 09:29:04

标签: mysql

当我使用命令行(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 ;

2 个答案:

答案 0 :(得分:1)

PhpMyAdmin使用的mysqli不支持分隔符。看看是否需要分隔符。我正在运行一个包含多行的脚本,我的MySQL以分号作为分隔符运行所有这些脚本。

答案 1 :(得分:0)

我遇到了一个类似的问题,当我通过我的SQL客户端运行它时,我的DELIMITER语句在通过Flyway运行时破坏了。

问题是缩进或隐藏的特殊字符,因为格式化IDE中的代码解决了这个问题。