【问题标题】:PhpMyAdmin, where procedures are saved on filesystemPhpMyAdmin,程序保存在文件系统上
【发布时间】:2013-12-17 04:06:56
【问题描述】:

我想通过 phpmyadmin 在 mysql 中创建过程,该过程在两个表中插入参数,但 phpmyadmin 抛出错误,这是不可能的。

所以我想尝试通过 notepad++ 编辑程序。你能告诉我它们保存在文件系统的什么地方吗?

我使用 xampp 在 localhost 上运行 phpmyadmin。

或者如果有任何其他选项可以使用这两个插入语句创建过程。

INSERT INTO `table1`(`att1`, `att2`, `att3`) 
VALUES (p_att1, p_att2, p_att3);
INSERT INTO `table2`(`att1`, `att2`, `att3`, `att4`, `att5`)
VALUES ('admin','admin', p_att4, p_att5, p_att6)

【问题讨论】:

  • 你至少应该指定你正在使用的mysql版本。如果您指的是存储过程,它们存储在 mysql 数据库中,但可能是您使用的是不支持过程的旧版本。
  • PHPMYADMIN - 4.0.4.1 MYSQL- libmysql - mysqlnd 5.0.10
  • "抛出错误,这是不可能的" ...您能否将错误包括在内?过程不会以原始形式存储在“文件系统上”。它们由服务器存储在一个表中,您不想尝试操纵这些结构。此外,通过查询 SELECT @@VERSION; 可以找到您的 mysql 服务器的版本; ...您发布的数字都不是您的服务器版本。

标签: mysql stored-procedures phpmyadmin


【解决方案1】:

正如在 cmets 中已经提到的,存储过程不存储在文件系统中,而是存储在数据库本身的特殊表中。

如果您有适当的权限,您可以通过发出以下command 来查看过程的定义

SHOW CREATE PROCEDURE my_proc;

现在你的程序看起来像这样

DELIMITER $$
CREATE PROCEDURE my_proc
(
  IN _att1 VARCHAR(32), 
  IN _att2 VARCHAR(32),
  IN _att3 VARCHAR(32),
  IN _att4 VARCHAR(32),
  IN _att5 VARCHAR(32)
)
BEGIN
  START TRANSACTION;
    INSERT INTO table1(att1, att2, att3) 
      VALUES (_att1, _att2, _att3);
    INSERT INTO table2(att1, att2, att3, att4, att5)
      VALUES ('admin','admin', _att3, _att4, _att5);
  COMMIT;
END$$
DELIMITER ;

这里是SQLFiddle演示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2017-12-14
    • 2018-05-05
    • 2017-09-05
    • 2023-04-04
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多