gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 02:10:49 25 4
gpt4 key购买 nike

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

在 NetBeans 中,在 Workbench 中:

in NetBeans in Workbench

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

最佳答案

可能有两个原因:

1。用户无权访问 mysql.proc

NetBeans 使用类似的东西来获取过程和函数的列表 (see the source code):

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,看不到过程和函数:

enter image description here

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

enter image description here

2。 8.0的mysql没有mysql.proc

同样,NetBeans 广泛使用 mysql.pros 来获取有关过程和函数的元数据(参见 source code)。我想我们可以获得的一个简单解决方法是创建一个模仿 the behavior of original 的 View 。 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

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

关于java - 我无法在 NetBeans 中查看或编辑 MySQL 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53096379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com