好的,我一直在扯掉我的头发,为什么这不起作用?
DELIMITER |
CREATE PROCEDURE Decrypt_pw()
READS SQL DATA
BEGIN
SELECT 'Hey Select';
END|
这是如此基本,我很确定我使用了正确的语法,我错过了什么?
错误:
21:14:07 [DELIMITER - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER |
CREATE PROCEDURE Decrypt_pw()
READS SQL DATA
BEGIN
SELECT 'He' at line 1
21:14:07 [END| - 0 row(s), 0.000 secs] [Error Code: 1064, SQL State: 42000] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END|' at line 1
我正在使用DbVisualizer,最新版本,这个问题可能与软件本身有关吗?
也许我应该更好地解释自己,密码在我的数据库中加密(无需担心),这允许我解密它们,这是我正在进行的个人项目。
我正在尝试开发一个脚本,允许我运行它并设置必要的数据库,表格等,以便工作,我需要一些必须创建的SP,我正在尝试创建一个SP通过mysqli_query,甚至可能吗?
基本上它是用于php应用程序的“安装脚本”。
更新:似乎this应该可以工作,但由于HostGator中的人员不能使用对象,所以不允许使用PHP中的对象。
我几乎已经放弃了mysqli,因为它只是不起作用我正在尝试使用shell_exec,我正在创建程序但是当我检查ddl它是空的时候,它正在创建空程序但至少它正在做某事...
答案 0 :(得分:1)
这可能是一个软件版本的问题...我尝试了你的代码,它对我来说效果很好...... 试试这个
DELIMITER //
CREATE PROCEDURE Decrypt_pw()
READS SQL DATA
BEGIN
SELECT 'Hey Select';
END //
DELIMITER ;
答案 1 :(得分:0)
至少从9.1开始,DBVisualizer不支持DELIMITER关键字。这就是他们这样做的方式:link。
答案 2 :(得分:0)
绝对不是一种优雅的解决方法...但是可以。
yada yada yada是关于不炮轰的所有常见警告。
// here's the core stored procedure code
$stored = <<<EOT
CREATE PROCEDURE Decrypt_pw()
READS SQL DATA
BEGIN
SELECT * FROM whatever;
END #
EOT;
// first, shell out to change the delimiter using mysql command-line
shell_exec('mysql -u user -ppassword -e "DELIMITER #");
// assuming $pdo is a valid PDO connection
// send the command to create the stored procedure:
$pdo->exec($stored);
// now shell out again to change the delimiter back
shell_exec('mysql -u user -ppassword -e "DELIMITER ;");