91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql中怎么設置大小寫不敏感

發布時間:2023-04-12 16:29:49 來源:億速云 閱讀:144 作者:iii 欄目:開發技術

這篇文章主要介紹了mysql中怎么設置大小寫不敏感的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇mysql中怎么設置大小寫不敏感文章都會有所收獲,下面我們一起來看看吧。

    mysql設置大小寫不敏感

    原理與參數

    mysql大小寫敏感配置與兩個參數相關 —— lower_case_file_system 和 lower_case_table_names

    查看當前mysql的大小寫敏感配置

    show global variables like '%case%';
     
    +------------------------+-------+
    | Variable_name          | Value |
    +------------------------+-------+
    | lower_case_file_system | ON    |
    | lower_case_table_names | 0     |
    +------------------------+-------+
    lower_case_file_system:表示當前系統文件是否大小寫敏感(ON為不敏感,OFF為敏感),只讀參數,無法修改。
    lower_case_table_names:表示表名是否大小寫敏感,可以修改。
    lower_case_table_names = 0時,mysql會根據表名直接操作,大小寫敏感。 
    lower_case_table_names = 1時,mysql會先把表名轉為小寫,再執行操作。

    修改前準備

    由于lower_case_table_names = 1時,mysql會先把表名轉為小寫,如果建表時表名是大寫的,設置完大小寫不敏感后就會查不到。

    感覺類似Oracle建表寫create table "test" 之后用select * from test就查不到,因為Oracle自動把test轉成了大寫。

    所以我們需要先把庫里所有表名改為小寫。mysql中沒有自帶方法,可以寫個存儲過程修改。

    DELIMITER //  
        
    DROP PROCEDURE IF EXISTS lowercase //  
    CREATE PROCEDURE lowercase(IN dbname VARCHAR(200))  
    BEGIN     
    DECLARE done INT DEFAULT 0;  
    DECLARE oldname VARCHAR(200);  
    DECLARE cur CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema = dbname;  
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;  
     
    OPEN cur;  
    REPEAT  
    FETCH cur INTO oldname;  
    SET @newname = LOWER(oldname);  
        
    #IF newname equals to oldname, do nothing;  
    #select 'a' <> 'A'; -> 0  
    #select 'a' <> BINARY 'A'; -> 1  
    SET @isNotSame = @newname <> BINARY oldname;  
    IF NOT done && @isNotSame THEN 
    SET @SQL = CONCAT('rename table ',oldname,' to ',@newname);
    PREPARE tmpstmt FROM @SQL;      
    EXECUTE tmpstmt;      
    DEALLOCATE PREPARE tmpstmt;      
    END IF;      
    UNTIL done END REPEAT;      
    CLOSE cur;     
    END //      
    DELIMITER ;
     
    #調用存儲過程 
    #call lowercase('TEST');
    #TEST為你想要修改的數據庫的名稱

    正式設置 

    vi my.cnf文件,設置 lower_case_table_names = 1 ,重啟mysql后生效

    vi my.cnf
    #添加
    lower_case_table_names = 1

    mysql大小寫不敏感,設置不生效的解決

    最近mysql測試環境碰到環境碰到了一個問題。希望mysql大小寫不敏感,但是設置大小寫敏感不生效?

    首先介紹一下我的mysql版本,mysql使用docker安裝。mysql版本為:5.7.22。

    解決思路

    1:查詢msyql的大小寫敏感參數

    show global variables like '%lower_case%';

    若lower_case_table_names = 0,則大小寫敏感,需要設置參數。

    2:更改mysql配置文件參數

    因mysql容器啟動命令有做了配置文件映射,直接修改配置文件參數即可。

    mysql容器啟動命令

    docker run --name mysql5.7.22_1502 -v /softdata/mysql/config:/etc/mysql/ -v /softdata/mysql/data:/var/lib/mysql  -p 1502:3306 -e MYSQL_ROOT_PASSWORD=zyc1233 -d mysql:5.7.22

    修改/softdata/mysql/config/my.cnf 如下:

    [mysqld]
    user=mysql
    character-set-server=utf8
    default_authentication_plugin=mysql_native_password
    secure_file_priv=/var/lib/mysql
    expire_logs_days=7
    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
    max_connections=1000
    lower_case_table_names=1
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8

    3:再次查詢msyql的大小寫敏感參數

    show global variables like '%lower_case%';
    #還是顯示lower_case_table_names = 0

    4:查詢mysql日志

    通過查詢mysql日志,發現以下信息

    Warning: World-writable config file ‘/etc/mysql/my.cnf' is ignored
    #mysql的配置文件被忽略了,why?

    注意兩個單詞World-writable,意味著mysql的配置文件任何人都可寫,mysql認為這不安全,于是忽略了這個配置文件。

    5:更改mysql的配置文件

    chmod 644 /softdata/mysql/config
    #my.cnf設置為當前用戶可讀寫,其他用戶不可寫,只讀.

    6:重啟mysql,再次查詢msyql的大小寫敏感參數

    docker restart mysql
    
    show global variables like '%lower_case%';#lower_case_table_names =1
    #mysql 設置大小寫不敏感成功

    關于“mysql中怎么設置大小寫不敏感”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“mysql中怎么設置大小寫不敏感”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    彩票| 辽源市| 姜堰市| 宜黄县| 克拉玛依市| 昌平区| 赤峰市| 汉沽区| 宜章县| 余姚市| 柏乡县| 安陆市| 威宁| 江西省| 鲜城| 白城市| 清河县| 安徽省| 剑川县| 盐山县| 巨鹿县| 牙克石市| 临沭县| 湛江市| 洞口县| 弥渡县| 永兴县| 襄城县| 上虞市| 宝清县| 宜黄县| 巴彦淖尔市| 肥乡县| 喀喇| 隆林| 施甸县| 湖北省| 昌图县| 阿克苏市| 临邑县| 贵港市|