我可以使用JDBC(MySQL-AB JDBC驱动程序,mysql-connector-java-5.1.23)从NetBeans(8.2)连接到MySQL数据库(5.7.23)。我可以看到表和视图,可以执行SQL语句以及数据库的其他所有操作,但是无法查看或编辑NetBeans中的存储过程(或函数)。我将它们存储在数据库中,可以在MySQL Workbench中查看和管理它们,但不能在NetBeans中看到它们(NetBeans中的“过程”文件夹为空)。可能是什么问题?
在NetBeans中,在Workbench中,左:
我有64位Windows 10 Pro(1709),64位NetBeans 8.2(PHP)和64位MySQL 5.7.14(来自WAMP)。
答案 0 :(得分:2)
答案 1 :(得分:0)
这很烦人,我仍然没有找到解决该问题的方法。这个问题已有一年多了。 NetBeans从8.2、9、10更改为现在使用的是11.2,但此功能仍然无法使用!我更改了MySQL版本,NetBeans版本,JDBC驱动程序版本!我必须与破坏NetBeans的计算机的区域设置有关!
在屏幕快照中,可以看到NetBeans中的SHOW PROCEDURE STATUS
显示了数据库中我的存储过程的列表,但NetBeans没有在导航树中显示它们!
没有其他人遇到过这种NetBeans奇怪的行为,真是很尴尬。
答案 2 :(得分:0)
可能有两个原因:
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,而看不到过程和功能:
尝试向您的用户添加对MySQL模式的访问权限。在工作台中,转到服务器->用户和特权->模式特权:
同样,NetBeans广泛使用mysql.pros
来获取有关过程和功能的元数据(请参见source code)。我想我们可以得到一个简单的解决方法,就是创建一个模拟the behavior of original 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
。
答案 3 :(得分:0)
答案 4 :(得分:0)
将 mysql.proc 上的所有权限授予 '