欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQLyog中DELIMITER執(zhí)行存儲(chǔ)過(guò)程時(shí)出現(xiàn)前置縮進(jìn)問(wèn)題的解決方法

 更新時(shí)間:2025年05月03日 09:40:42   作者:星途碼客  
在SQLyog中執(zhí)行存儲(chǔ)過(guò)程時(shí)出現(xiàn)的前置縮進(jìn)問(wèn)題,實(shí)際上反映了SQLyog對(duì)SQL語(yǔ)句解析的一個(gè)特殊行為,本文給大家介紹了詳細(xì)解釋和解決方案,需要的朋友可以參考下

問(wèn)題根源

  1. SQLyog的語(yǔ)句分隔邏輯

    • SQLyog默認(rèn)會(huì)根據(jù)分號(hào)(;)和換行自動(dòng)分隔SQL語(yǔ)句

    • 當(dāng)代碼有縮進(jìn)時(shí),SQLyog可能錯(cuò)誤地將縮進(jìn)后的內(nèi)容識(shí)別為新的SQL語(yǔ)句

  2. DELIMITER的敏感性

    • DELIMITER //命令必須獨(dú)立一行且無(wú)前導(dǎo)空格

    • 任何縮進(jìn)都會(huì)導(dǎo)致SQLyog將其視為普通文本而非指令

  3. 存儲(chǔ)過(guò)程體內(nèi)的語(yǔ)句

    • 過(guò)程體內(nèi)的縮進(jìn)不會(huì)影響執(zhí)行(因?yàn)槭亲鳛檎w解析)

    • 但過(guò)程體外的命令(如DELIMITER)必須無(wú)縮進(jìn)

正確寫(xiě)法示例

-- 必須頂格寫(xiě)(無(wú)縮進(jìn))
DELIMITER //
CREATE PROCEDURE grant_role_to_all_users()
BEGIN
    -- 這里面的縮進(jìn)不會(huì)影響執(zhí)行
    DECLARE finished INTEGER DEFAULT 0;
    DECLARE user_host VARCHAR(255);
    
    DECLARE user_cursor CURSOR FOR 
        SELECT CONCAT('`',USER,'`@`',HOST,'`') 
        FROM mysql.user 
        WHERE USER NOT IN ('root','mysql.sys','mysql.session','mysql.infoschema');
    
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1;
    
    OPEN user_cursor;
    
    get_user: LOOP
        FETCH user_cursor INTO user_host;
        IF finished = 1 THEN LEAVE get_user; END IF;
        
        SET @grant_sql = CONCAT('GRANT "public_role" TO ', user_host);
        PREPARE stmt FROM @grant_sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
        
        SET @default_sql = CONCAT('SET DEFAULT ROLE "public_role" FOR ', user_host);
        PREPARE stmt FROM @default_sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
    END LOOP get_user;
    
    CLOSE user_cursor;
END//
-- 必須頂格寫(xiě)(無(wú)縮進(jìn))
DELIMITER ;

永久解決方案

  1. 關(guān)閉SQLyog的自動(dòng)分隔功能

    • 菜單欄 → 工具 → 首選項(xiàng) → 查詢編輯器

    • 取消勾選"自動(dòng)分隔SQL語(yǔ)句"

  2. 使用批處理執(zhí)行模式

    • 全選所有代碼(包括DELIMITER)

    • 按 Ctrl+Shift+F9(批處理執(zhí)行)而非普通執(zhí)行

  3. 檢查編輯器設(shè)置

    • 確保沒(méi)有開(kāi)啟"智能縮進(jìn)"或"語(yǔ)法感知縮進(jìn)"功能

為什么命令行不受影響?

MySQL原生命令行客戶端:

  • 完全依賴DELIMITER指令

  • 不關(guān)心縮進(jìn)和格式

  • 直到遇到定義的結(jié)束符(如//)才會(huì)執(zhí)行

而SQLyog等圖形工具為提高易用性,會(huì)嘗試自動(dòng)解析SQL結(jié)構(gòu),導(dǎo)致對(duì)格式敏感。

最佳實(shí)踐建議

  1. 存儲(chǔ)過(guò)程創(chuàng)建語(yǔ)句建議:

    • DELIMITER和END//必須頂格

    • 過(guò)程體內(nèi)的縮進(jìn)保持一致性(4空格或1個(gè)tab)

  2. 復(fù)雜過(guò)程建議:

-- 頂格
DELIMITER //
CREATE PROCEDURE proc_name()
BEGIN
    -- 縮進(jìn)內(nèi)容
    SELECT * FROM table;
END//
-- 頂格
DELIMITER ;

保存為腳本文件后通過(guò)命令行執(zhí)行:

mysql -u user -p db_name < procedure.sql

到此這篇關(guān)于SQLyog中DELIMITER執(zhí)行存儲(chǔ)過(guò)程時(shí)出現(xiàn)的前置縮進(jìn)問(wèn)題的解決方法的文章就介紹到這了,更多相關(guān)SQLyog DELIMITER出現(xiàn)前置縮進(jìn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用innodb_force_recovery解決MySQL崩潰無(wú)法重啟問(wèn)題

    使用innodb_force_recovery解決MySQL崩潰無(wú)法重啟問(wèn)題

    這篇文章主要介紹了使用innodb_force_recovery解決MySQL崩潰無(wú)法重啟問(wèn)題,這只一個(gè)成功案例,并不是萬(wàn)能的解決方法,需要酌情考慮,需要的朋友可以參考下
    2015-05-05
  • MySQL數(shù)據(jù)庫(kù)中刪除重復(fù)記錄簡(jiǎn)單步驟

    MySQL數(shù)據(jù)庫(kù)中刪除重復(fù)記錄簡(jiǎn)單步驟

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)中刪除重復(fù)記錄的相關(guān)資料,在使用數(shù)據(jù)庫(kù)時(shí),出現(xiàn)重復(fù)數(shù)據(jù)是常有的情況,但有些情況是允許數(shù)據(jù)重復(fù)的,而有些情況是不允許的,當(dāng)出現(xiàn)不允許的情況,我們就需要對(duì)重復(fù)數(shù)據(jù)進(jìn)行刪除處理,需要的朋友可以參考下
    2023-08-08
  • mysql 5.7 數(shù)據(jù)庫(kù)安裝步驟個(gè)人總結(jié)

    mysql 5.7 數(shù)據(jù)庫(kù)安裝步驟個(gè)人總結(jié)

    這篇文章主要介紹了mysql 數(shù)據(jù)庫(kù)安裝步驟個(gè)人總結(jié),需要的朋友可以參考下
    2017-09-09
  • IOS 數(shù)據(jù)庫(kù)升級(jí)數(shù)據(jù)遷移的實(shí)例詳解

    IOS 數(shù)據(jù)庫(kù)升級(jí)數(shù)據(jù)遷移的實(shí)例詳解

    這篇文章主要介紹了IOS 數(shù)據(jù)庫(kù)升級(jí)數(shù)據(jù)遷移的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家解決數(shù)據(jù)庫(kù)升級(jí)及數(shù)據(jù)遷移的問(wèn)題,需要的朋友可以參考下
    2017-07-07
  • mysql常用函數(shù)與視圖索引全面梳理

    mysql常用函數(shù)與視圖索引全面梳理

    這篇文章主要介紹了mysql的常用函數(shù)與視圖索引的特點(diǎn)與作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • 實(shí)現(xiàn)數(shù)據(jù)庫(kù)水平切分的兩個(gè)思路

    實(shí)現(xiàn)數(shù)據(jù)庫(kù)水平切分的兩個(gè)思路

    今天小編就為大家分享一篇關(guān)于實(shí)現(xiàn)數(shù)據(jù)庫(kù)水平切分的兩個(gè)思路,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • MySQL8.0.21.0社區(qū)版安裝教程(圖文詳解)

    MySQL8.0.21.0社區(qū)版安裝教程(圖文詳解)

    這篇文章主要介紹了MySQL8.0.21.0社區(qū)版安裝教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • MySQL NDB Cluster關(guān)于Nginx stream的負(fù)載均衡配置方式

    MySQL NDB Cluster關(guān)于Nginx stream的負(fù)載均衡配置方式

    這篇文章主要介紹了MySQL NDB Cluster關(guān)于Nginx stream的負(fù)載均衡配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • mysql中復(fù)制表結(jié)構(gòu)的方法小結(jié)

    mysql中復(fù)制表結(jié)構(gòu)的方法小結(jié)

    這篇文章主要介紹了mysql中復(fù)制表結(jié)構(gòu)的方法,需要的朋友可以參考下
    2014-07-07
  • 一文分析SQL?Server中事務(wù)使用的鎖

    一文分析SQL?Server中事務(wù)使用的鎖

    這篇文章主要介紹了一文分析SQL?Server中事務(wù)使用的鎖,數(shù)據(jù)庫(kù)引擎使用不同的鎖模式鎖定資源,通過(guò)不同鎖的組合使用達(dá)到不同的數(shù)據(jù)庫(kù)事務(wù)隔離級(jí)別,需要的朋友可以參考一下
    2022-09-09

最新評(píng)論