我正在 Symfony2 中处理一个应用程序项目。
通过注册,每个客户端都会创建一个数据库。
模式是在客户端登录时由验证服务创建的。
该应用程序需要一些数据才能工作,到目前为止,我使用了 ORM 夹具。
由于多种原因,我现在需要从夹具加载转向更接近数据库。
我创建了一个存储过程(mysql),它将取代所有数据加载。该过程有效,但我需要在每个数据库中与架构一起创建该过程。
我使用原始 sql 来达到此目的,但我无法解决创建过程语句第一行的问题。看来这与“分隔符$$”有关。
在使用 sql 语句执行服务时,我得到:
"message":"执行 'delimiter $$\r\n\r\nCREATE DEFINER= 时发生异常root
@`本地主机"
这似乎是因为换行,但我不确定。有人知道解决这个问题的方法吗?
问题来自这样一个事实:分隔符命令只能在使用 MySQL 命令行工具时使用,如上所述http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html http://dev.mysql.com/doc/refman/5.1/en/stored-programs-defining.html。要解决此问题,您需要删除要更改分隔符的部分,然后使用 ;作为你的分隔符。考虑以下:
delimiter $$
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END$$
上面的方法不会起作用,但是下面的方法会起作用:
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)