0

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

3 回答 3

1

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

于 2017-04-26T13:50:10.023 回答
1

我在这里找到了一个解决方案,它对我有用(我正在使用 ScriptRunner):

只是使用-- @DELIMITER $$而不是DELIMITER $$

于 2021-08-18T05:43:46.007 回答
0

我刚刚遇到了一个类似的问题,即我的 DELIMITER 语句在通过 Flyway 运行时中断,尽管当我通过我的 sql 客户端运行它时它仍在工作。

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

于 2016-06-17T20:04:44.407 回答