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

mysql中如何設(shè)置大小寫不敏感

 更新時間:2023年04月12日 15:34:19   作者:Hehuyi_In  
這篇文章主要介紹了mysql中如何設(shè)置大小寫不敏感問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mysql設(shè)置大小寫不敏感

原理與參數(shù)

mysql大小寫敏感配置與兩個參數(shù)相關(guān) —— lower_case_file_system 和 lower_case_table_names

查看當(dāng)前mysql的大小寫敏感配置

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

修改前準(zhǔn)備

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

感覺類似Oracle建表寫create table "test" 之后用select * from test就查不到,因?yàn)镺racle自動把test轉(zhuǎn)成了大寫。

所以我們需要先把庫里所有表名改為小寫。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 ;
?
#調(diào)用存儲過程?
#call lowercase('TEST');
#TEST為你想要修改的數(shù)據(jù)庫的名稱

正式設(shè)置 

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

vi my.cnf
#添加
lower_case_table_names = 1

mysql大小寫不敏感,設(shè)置不生效的解決

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

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

解決思路

1:查詢msyql的大小寫敏感參數(shù)

show global variables like '%lower_case%';

若lower_case_table_names = 0,則大小寫敏感,需要設(shè)置參數(shù)。

2:更改mysql配置文件參數(shù)

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

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的大小寫敏感參數(shù)

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

4:查詢mysql日志

通過查詢mysql日志,發(fā)現(xiàn)以下信息

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

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

5:更改mysql的配置文件

chmod 644 /softdata/mysql/config
#my.cnf設(shè)置為當(dāng)前用戶可讀寫,其他用戶不可寫,只讀.

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

docker restart mysql

show global variables like '%lower_case%';#lower_case_table_names =1
#mysql 設(shè)置大小寫不敏感成功

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MySql優(yōu)化之InnoDB,4GB內(nèi)存,多查詢的my.ini中文配置方案詳解

    MySql優(yōu)化之InnoDB,4GB內(nèi)存,多查詢的my.ini中文配置方案詳解

    本文是一個針對 4G 內(nèi)存系統(tǒng)(主要運(yùn)行只有 InnoDB 表的 MySQL 并使用幾個連接數(shù)執(zhí)行復(fù)雜的查詢)的MySQL配置文件方案
    2018-03-03
  • sql format()函數(shù)的用法及簡單實(shí)例

    sql format()函數(shù)的用法及簡單實(shí)例

    下面小編就為大家?guī)硪黄猻ql format函數(shù)()的用法及簡單實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • mysql用戶變量與set語句示例詳解

    mysql用戶變量與set語句示例詳解

    這篇文章主要給大家介紹了關(guān)于mysql用戶變量與set語句的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 對MySQL慢查詢?nèi)罩具M(jìn)行分析的基本教程

    對MySQL慢查詢?nèi)罩具M(jìn)行分析的基本教程

    這篇文章主要介紹了對MySQL慢查詢?nèi)罩具M(jìn)行分析的基本教程,文中提到的Query-Digest-UI這個基于B/S的圖形化查看工具非常好用,需要的朋友可以參考下
    2015-12-12
  • 詳解MySQL是如何解決幻讀的

    詳解MySQL是如何解決幻讀的

    這篇文章主要介紹了MySQL是如何解決幻讀的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySQL OOM 系列三 擺脫MySQL被Kill的厄運(yùn)

    MySQL OOM 系列三 擺脫MySQL被Kill的厄運(yùn)

    這篇文章主要介紹了MySQL OOM 系列三 擺脫MySQL被Kill的厄運(yùn) ,需要的朋友可以參考下
    2016-07-07
  • MySQL表的操作之創(chuàng)建查看刪除和修改

    MySQL表的操作之創(chuàng)建查看刪除和修改

    這篇文章主要給大家介紹了關(guān)于MySQL表的操作之創(chuàng)建查看刪除和修改的相關(guān)資料,MySQL是最常用的數(shù)據(jù)庫,在數(shù)據(jù)庫操作中基本都是增刪改查操作,簡稱CRUD,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • 通過代碼實(shí)例了解頁面置換算法原理

    通過代碼實(shí)例了解頁面置換算法原理

    這篇文章主要介紹了通過代碼實(shí)例了解頁面置換算法原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • mysql函數(shù)split功能實(shí)現(xiàn)

    mysql函數(shù)split功能實(shí)現(xiàn)

    mysql 5.* 的版本現(xiàn)在沒有split 函數(shù),但有些地方會用,在這里就簡單記錄一下
    2012-09-09
  • MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用

    MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用

    這篇文章主要介紹了MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用,包括窗口函數(shù)的基本用法,LAG()和LEAD()函數(shù)介紹,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論