【问题标题】:How do I view my stored procedures in phpMyAdmin?如何在 phpMyAdmin 中查看我的存储过程?
【发布时间】:2011-09-01 05:10:30
【问题描述】:

我在phpMyAdmin中创建了一个存储过程

CREATE PROCEDURE Sample()
SELECT * FROM feedback

在哪里可以查看此程序?如果在 phpMyAdmin 中不可能,有哪些好的程序具有编写、存储和查看存储过程、表等的功能?

【问题讨论】:

  • 根据phpMyAdmin home page,它具有“管理存储过程和触发器”的能力,但我终生无法弄清楚如何。
  • 为了对网络上所有神圣事物的热爱和你自己的理智——请不要使用那些垃圾 PHPMyAdmin,那里有很多更好的 GUI 工具,但不是构成巨大的安全风险,而且它们没有糟糕的可用性。其中之一是 MySQL Workbench (mysql.com/downloads/workbench),另一个是 SQLYog(webyog.com)。
  • 该死,我很高兴我找到了这个线程和关于 MySQL Workbench 的评论!谢谢注!我刚开始使用 PHP/MySQL,甚至不知道存在更高级的工具。 Workbench 让我想起了很多 MS SQL Management Studio,这正是我所需要的!让它工作起来非常容易 - 只需解压缩 zip,运行,点击连接,一切都设置好了!
  • @N.B: 是的,但是许多 web 主机服务既不给你 shell 访问权限,也不在互联网上公开他们的 MySQL 数据库服务器,所以通常你唯一的选择是使用预安装的 PHPMyAdmin。
  • @N.B 我想扮演魔鬼的拥护者,请您引用一个专门解决您对 PHPMyAdmin 中“巨大、巨大的安全风险”的意见的来源。具体来说,为 PHPMyAdmin 使用而保护服务器的所有建议步骤都适用于任何 PHP 脚本(可能已经在运行)的使用,甚至更适用于任何远程数据库管理软件的使用,包括 MySQL Workbench 和 SQLYog。来源:stackoverflow.com/questions/3661911/… 至于可用性,这只是一个偏好,不值得讨论。

标签: mysql sql stored-procedures phpmyadmin


【解决方案1】:

在phpmyadmin中查看存储过程:

查询:

SELECT routine_definition
FROM information_schema.routines
WHERE 
routine_name = 'procedure_name' AND routine_schema = 'databasename';

这里是如何在 phpmyadmin 中到达那里。

routines 选项在phpmyadmin 中可用。在您至少拥有一个存储过程之前,该链接在 PHPmyadmin 中不可见。查看上图并点击structure标签下的routines链接。

【讨论】:

  • 并非所有 PHPMyAdmin 安装都有它。我的服务器上 1&1 的那个,只是没有这个链接(我的本地主机上的 PHPMyAdmin 有它),并且在很多方面都失败了存储过程。 OP 最好与管理员一起使用,我在这个主题中发布过。不管怎样,你的回答还是值得一票的。
  • @Hibou57 尝试将主题更改为original,我可以在“权限”旁边找到一个新标签“例程”
  • 我认为重要的是要说(因为它发生在我身上)“例程”链接不会显示,除非您确实为数据库定义了存储过程。因此,如果这是您第一次使用它们,只需在查询框中运行查询,然后返回数据库并查找 Routines 链接,您就会看到刚刚创建的存储过程。
  • +1 用于屏幕截图。哇,你似乎是唯一一个制作可视化工具屏幕截图,而不是粘贴脚本的人。
  • 如果您无法从图像中看到状态:例程链接显示在表列表数据库结构选项卡下。因此,单击数据库名称以查看数据库中的表,然后单击结构选项卡,在表列表之后,例程链接将显示,但前提是您已经有例程。
【解决方案2】:
select routine_definition
from information_schema.routines
where routine_schema = 'db_name'
and routine_name = 'sp_name';

【讨论】:

    【解决方案3】:

    这个answer 展示了如何在没有脚本的情况下查看它们。

    “一旦您创建了存储过程,它将出现在您的表格下方的例程字段集中(在结构选项卡中),您可以轻松更改/删除它。”

    【讨论】:

      【解决方案4】:

      总之你可以使用这个sql

      SHOW CREATE PROCEDURE Sample;
      

      更多信息在这里

      更新:如果您不记得名称,可以查询INFORMATION_SCHEMA 数据库以查看所有过程(如果您记得部分名称,您可以在ROUTINE_NAME 上使用 LIKE)

      SELECT ROUTINE_TYPE, ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA='dbname';
      

      【讨论】:

      • 如果我有时不记得名字怎么办?是否有该过程的可视化表示?
      【解决方案5】:

      您可以选择“information_schema”作为数据库并从表“例程”中查询所有条目,以防您不想每次都使用 SQL。

      【讨论】:

      • 这是最好的答案.. 看看。
      • 要选择 information_schema 选择另一个数据库并在 SQL 选项卡查询 USE information_schema 中(神秘地“使用 db_name”只选择了服务器根目录会进入主页而不是 db_name)
      【解决方案6】:

      在phpMyAdmin下,点击你的数据库(不在表上),然后点击“+Routines”。

      在那里你可以编辑/删除你所有的存储过程

      【讨论】:

        【解决方案7】:
        show procedure status;      -- will show you the stored procedures.
        show create procedure MY_PROC;  -- will show you the definition of a procedure. 
        help show;          -- show all the available options for the show command.
        

        【讨论】:

          【解决方案8】:

          在 PHPMYADMIN 3.5.2.2 版本中,您只需单击顶部的例程链接。见附图

          【讨论】:

            【解决方案9】:

            不要忘记,在较小的屏幕上,您必须使用“更多”菜单。

            【讨论】:

              【解决方案10】:

              单击主页,数据库,我创建程序的数据库后。它打开该数据库的结构窗口。 在菜单栏中:“结构,sql,搜索,...”应该有例程,如果没有然后单击右侧的项目,称为更多,它应该在那里(诅咒我的上网本没有24英寸的屏幕)。

              要确保您的数据库具有单击导出的过程,请选择“自定义 - 显示所有可能的选项”,在“输出:”下选择“以文本形式查看输出”,在“格式特定选项:”下选择“结构” (就在“转储表”下),确保选择了“添加 CREATE PROCEDURE / FUNCTION / EVENT 语句”(就在“转储表”下)。 现在单击 Go,您的程序应该会显示出来

              使用: 版本信息:3.5.2,最新稳定版本:3.5.2.2

              【讨论】:

                【解决方案11】:

                使用Adminer data-base interface。与 PHPMyAdmin 不同,它完全能够查看、编辑和调用存储过程,其中 PHPMyAdmin 失败并出现大量错误(尝试运行 SQL 语句创建一个错误,尝试调用一个错误,尝试更改错误一个已经创建的,除了它无法列出定义的那些......我真的想知道 PHPMyAdmin 在将 SQL 查询文本提交到数据库之前如何处理它,这太可怕了)。

                只需将Adminer PHP 文件复制到您的Web 服务器的某个位置,打开相应的URL。登录并选择数据库后,在表列表下方,您将看到存储过程列表,并带有一个调用按钮。单击程序链接,您还可以更改(编辑)它。

                老实说,我建议你放弃 PHPMyAdmin,它完全无法正确处理这个问题(请注意,SQLBuddy 也在某种程度上失败了)。

                -- 编辑--

                为了完整起见,您还可以使用此 SQL 查询列出存储过程:

                show procedure status;
                

                或者这个,检索名称已知的过程:

                show procedure status where Name = 'name';
                

                【讨论】:

                  猜你喜欢
                  • 2011-08-24
                  • 2023-03-30
                  • 1970-01-01
                  • 2011-12-26
                  • 1970-01-01
                  • 2016-05-12
                  • 2013-07-03
                  • 2016-12-02
                  相关资源
                  最近更新 更多