簡體   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