繁体   English   中英

我无法在 NetBeans 中查看或编辑 MySQL 存储过程

[英]I can't see or edit MySQL stored procedures in NetBeans

我可以使用 JDBC(MySQL-AB JDBC 驱动程序,mysql-connector-java-5.1.23)从 NetBeans (8.2) 连接到 MySQL 数据库 (5.7.23)。 我可以查看表和视图、执行 SQL 语句以及使用数据库执行的所有其他操作,但我无法查看或编辑 NetBeans 中的存储过程(或函数)。 我在数据库中有它们,我可以在 MySQL Workbench 中查看和管理它们,但在 NetBeans 中看不到它们(NetBeans 中的文件夹“Procedures”是空的)。 可能是什么问题呢?

左边是 NetBeans,右边是 Workbench:

在 NetBeans 中 在工作台

我有 64 位 Windows 10 Pro (1709)、64 位 NetBeans 8.2 (PHP) 和 64 位 MySQL 5.7.14(来自 WAMP)。

我正在使用 netbeans 8.2 补丁 2 并且可以显示存储过程

在此处输入图片说明

这是我正在使用的信息 netbeans

在此处输入图片说明

我认为您应该重新安装完整版的 netbeans。

这很烦人,我仍然没有找到这个问题的解决方案。 这个问题已经一年多了。 NetBeans 从 8.2、9、10 更改,现在我使用 11.2,但此功能仍然不起作用! 我更改了 MySQL 版本、NetBeans 版本、JDBC 驱动程序版本!!! 我一定与我的机器的区域设置有关,这会破坏 NetBeans!

NetBeans 中的存储过程

在屏幕截图上可以看到 NetBeans 中的SHOW PROCEDURE STATUS显示了我在数据库中的存储过程列表,但 NetBeans 没有在导航树中显示它们!

没有其他人遇到这种 NetBeans 奇怪的行为,这真的很尴尬。

mysql.proc

可能有两个原因:

1. 用户无权访问 mysql.proc

NetBeans 使用类似的东西来获取过程和函数的列表( 请参阅源代码):

SELECT 
    db, name, type, param_list, returns, body
FROM
    mysql.proc
WHERE
    TYPE = 'PROCEDURE' OR TYPE = 'FUNCTION'; 

尝试在 NetBeans 中执行查询并查看结果。

看截图。 在第一个中,用户 root 可以访问 mysql 模式,您可以看到所有系统模式,包括 mysql。 在第二种情况下,用户只能访问 information_schema 和 performance_schema,不能看到过程和函数:

在此处输入图片说明

尝试向您的用户添加对 MySQL 架构的访问权限。 在工作台中转到 Server -> Users and Privileges -> Schema Privileges:

在此处输入图片说明

2. 8.0 mysql中没有mysql.proc

同样,NetBeans 广泛使用mysql.pros来获取有关过程和函数的元数据(参见源代码)。 我想我们可以得到一个简单的解决方法是创建一个视图来模仿原始mysql.proc 的行为

CREATE VIEW mysql.proc AS
    SELECT 
        ROUTINE_SCHEMA AS db,
        ROUTINE_NAME AS name,
        ROUTINE_TYPE AS type,
        ROUTINE_DEFINITION AS body,
        CONCAT(DTD_IDENTIFIER,
                ' CHARSET ',
                CHARACTER_SET_NAME) AS returns,
        (SELECT 
                GROUP_CONCAT(CONCAT(parameter_name, ' ', dtd_identifier))
            FROM
                information_schema.parameters p
            WHERE
                p.specific_name = outertable.routine_name
                    AND ordinal_position > 0) AS param_list
    FROM
        information_schema.routines outertable

创建视图后,我们可以查看 NetBeans 11.2 中的过程和函数,并查看它们的主体和参数列表。 此外,我不建议使用 NetBeans 编辑过程,因为它无法获得完整的元数据。 例如,它无法获得DETERMINISTIC SQL SECURITY INVOKER等声明选项。

证明它是解决方案。

在此处输入图片说明

将 mysql.proc 上的所有权限授予 '<user_name>'@'<host_name>';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM