java—我无法在netbeans中查看或编辑mysql存储过程

fdbelqdn  于 2021-06-18  发布在  Mysql
关注(0)|答案(4)|浏览(406)

我可以使用jdbc(mysql ab jdbc driver,mysql-connector-java-5.1.23)从netbeans(8.2)连接到mysql数据库(5.7.23)。我可以通过数据库查看表和视图、执行sql语句和其他所有内容,但我不能在netbeans中查看或编辑存储过程(或函数)。我在数据库中有它们,我可以在mysql工作台中看到和管理它们,但在netbeans中看不到它们(netbeans中的文件夹“procedures”是空的)。有什么问题吗?
在netbeans中左边,在workbench中右边:


我有64位windows10pro(1709)、64位netbeans8.2(php)和64位mysql 5.7.14(来自wamp)。

8xiog9wr

8xiog9wr1#

我还没有找到解决这个问题的办法,真是令人恼火。这个问题已经有一年多的历史了。netbeans从8.2,9,10变了,现在我用的是11.2,但是这个功能仍然不起作用!我改变了mysql版本,netbeans版本,jdbc驱动程序版本!!!我必须与我的机器的区域设置有关,这会破坏netbeans!

在截图上可以看到 SHOW PROCEDURE STATUS 在netbeans中显示了数据库中存储过程的列表,但netbeans没有在导航树中显示它们!
真的很尴尬,没有人遇到这种奇怪的行为。

emeijp43

emeijp432#

我使用的是netbeans8.2patch2,可以显示存储过程

这是我正在使用的info netbeans

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

cgfeq70w

cgfeq70w3#

可能有两个原因:

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在内的所有系统模式。在第二种情况下,用户只能访问信息模式和性能模式,无法查看过程和函数:

尝试向用户添加对mysql模式的访问权限。在workbench中,转到服务器->用户和权限->架构权限:

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

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

bqf10yzr

bqf10yzr4#

证明它是解决方案的证据。

相关问题