ToB企服应用市场:ToB评测及商务社交产业平台

标题: MySQL数据库怎么让他不区分数据库巨细写,数据库巨细写不敏感 [打印本页]

作者: 南七星之家    时间: 2024-11-11 20:52
标题: MySQL数据库怎么让他不区分数据库巨细写,数据库巨细写不敏感
#1024步调员节 | 征文#

   在docker中的MySQL容器,怎么让他不区分数据库巨细写,数据库巨细写不敏感
  

媒介

假如你的是docker的MySQL容器,在启动运行容器时,没有指定。
唯一的办理办法,就是重新运行一个新的容器。
当前既然有唯一,也有唯二,不过,这个办理办法,就不建议了,由于容器重新启动就失效了。
在此之前,你可以先查询你的lower_case_table_names 的值是什么?
查询lower_case_table_names 的值

  1. SHOW VARIABLES LIKE 'lower_case_table_names';
复制代码

查询版本mysql的版本信息

  1. SELECT VERSION();
复制代码
更详细查看版本的方法请看文章:
我docker拉取mysql镜像时用的是latest,我该怎么看我的镜像版本是多少?可以通过一下三种方法查看
docker里的mysql容器,默认的日记文件和数据库文件放在什么位置

请看文章:docker里的mysql容器,默认的日记文件和数据库文件放在什么位置?并且可以通过sql命令查看
(唯二办法1)设置全局变量-直接使用命令设置不区分巨细写

强制执行
  1. SET GLOBAL lower_case_table_names=1;
复制代码
会提示提示
  1. SET GLOBAL lower_case_table_names=1
  2. > 1238 - Variable 'lower_case_table_names' is a read only variable
复制代码

(唯二办法2)设置数据字典的 lower_case_table_names

设置数据字典的 lower_case_table_names: 你可以通过 SQL 命令来设置数据字典的 lower_case_table_names:
  1. SET @@global.lower_case_table_names = 1;
复制代码
但是请注意,这个设置在 MySQL 服务重启后会规复为默认值。

1.直接安装的MySQL数据库,不区分巨细写办理办法

MySQL 的设置文件my.cnf 或my.ini来设置,lower_case_table_names 的值为1
  1. [mysqld]
  2. lower_case_table_names=1
复制代码
查询lower_case_table_names 的值

  1. SHOW VARIABLES LIKE 'lower_case_table_names';
复制代码

my.cnf 或my.ini在什么位置

我是在根目录下,我的系统是windows10;
截图如下:

my.ini内容如下

  1. [mysql]
  2. default-character-set=utf8
  3. [mysqld]
  4. port=3306
  5. basedir=D:/CodeTools/phpstudy_pro/Extensions/MySQL5.7.26/
  6. datadir=D:/CodeTools/phpstudy_pro/Extensions/MySQL5.7.26/data/
  7. character-set-server=utf8
  8. default-storage-engine=MyIsam
  9. max_connections=100
  10. collation-server=utf8_unicode_ci
  11. init_connect='SET NAMES utf8'
  12. innodb_buffer_pool_size=64M
  13. innodb_flush_log_at_trx_commit=1
  14. innodb_lock_wait_timeout=120
  15. innodb_log_buffer_size=4M
  16. innodb_log_file_size=256M
  17. interactive_timeout=120
  18. join_buffer_size=2M
  19. key_buffer_size=32M
  20. log_error_verbosity=1
  21. max_allowed_packet=16M
  22. max_heap_table_size=64M
  23. myisam_max_sort_file_size=64G
  24. myisam_sort_buffer_size=32M
  25. read_buffer_size=512kb
  26. read_rnd_buffer_size=4M
  27. server_id=1
  28. skip-external-locking=on
  29. sort_buffer_size=256kb
  30. table_open_cache=256
  31. thread_cache_size=16
  32. tmp_table_size=64M
  33. wait_timeout=120
  34. [client]
  35. port=3306
  36. default-character-set=utf8
复制代码

2.宝塔的mysql数据库的 my.cnf 或my.ini在什么位置

MySQL的设置文件通常位于/etc/my.cnf或者/etc/mysql/my.cnf中。
你也可以通过命令搜刮
  1. find / -name my.cnf
复制代码
我在测试中它的位置是:/etc/my.cnf
3.docker的mysql容器的 my.cnf 或my.ini在什么位置

位置:/etc/mysql/my.cnf


4.docker的mysql容器

4.1 镜像启动容器,使用环境变量,让数据库不区分巨细写

运行命令
  1. docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_LOWER_CASE_TABLE_NAMES=1 -d mysql:5.7
复制代码

需要注意


  1. docker run --name some-mysql \           -e MYSQL_ROOT_PASSWORD=my-secret-pw \           -e MYSQL_INIT_COMMAND="SET GLOBAL lower_case_table_names=1;
  2. " \           -d mysql:5.7
复制代码
这条命令将在 MySQL 启动时执行 SQL 命令 SET GLOBAL lower_case_table_names=1;
,从而设置 lower_case_table_names 为 1,使得表名不区分巨细写。
4.2【保举】 镜像启动容器,挂载设置文件,让数据库不区分巨细写

创建一个包罗 my.cnf 文件的目录,并将该目录挂载到 Docker 容器中 MySQL 盼望读取设置文件的位置。
4.2.1.创建设置文件 创建一个 my.cnf 文件,并设置 lower_case_table_names:

下面是my.cnf 文件的内容
  1. [mysqld]
  2. lower_case_table_names=1
复制代码
4.2.2.启动 Docker 容器 使用 -v 参数挂载设置文件到容器内:

  1. docker run --name some-mysql -v /path/to/your/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
复制代码

注意事项

4.2.3.验证设置是否生效

启动容器后,你可以通过登录 MySQL 并查询 lower_case_table_names 的值来验证设置是否生效:
  1. docker exec -it some-mysql mysql -uroot -p
复制代码

运行命令结果如下
  1. C:\Users\Administrator>docker exec -it mysqltest mysql -uroot -p
  2. Enter password:
复制代码
直接输入暗码即可;
这里需要输入暗码,我的暗码是123465
这里你输入暗码的动作是看不见的,不过没关系,直接输入即可;
运行命令结果如下
  1. C:\Users\Administrator>docker exec -it mysqltest mysql -uroot -p
  2. Enter password:
  3. Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 178Server version: 9.0.1 MySQL Community Server - GPLCopyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>
复制代码
执行以下命令-查询状态:

  1. SHOW VARIABLES LIKE 'lower_case_table_names';
复制代码

执行查询数据库表的命令-进行验证:

  1. use mysql;
  2. SELECT * FROM db;
  3. use mysql;
  4. SELECT * FROM DB;
复制代码
这里查是数据库默认表,
直接sql后,假如可以正常显示表数据,则为正常;
截图如下:
图1

图2


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4