Mysql 表名大小写敏感

本文解析了MySQL中表名和数据库名的大小写敏感性配置,详细介绍了lower_case_table_names参数的三个设置选项及其影响。该参数决定了数据库对象在存储和比较时的大小写处理方式,对于跨平台移植尤为重要。

默认情况下,mysql在创建数据库对象时,是区分大小写的。故与microsoft之间进行移植时,要特别注意是否存在问题。在mysql中大小写与参数lower_case_table_names有很大关系。

以下为官方解释:

If set to 0, table names are stored as specified and comparisons are case sensitive. If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive. If set to 2, table names are stored as given but compared in lowercase. This option also applies to database names and table aliases.

当设置为0时,存储和比较都是大小写敏感的;当设置为1是存储时会转换为小写,比较时不区分大小写;当设置为2时候,存储时区分大小写,比较的时与转换为小写。此选项对数据库名和数据表名起作用。

lower_case_table_names是个只读变量,不能直接设置生效,必须在配置文件中设置并重启mysqld服务。

mysql> set lower_case_table_names=1;


转载于:https://my.oschina.net/PagodaTree/blog/649099

### 设置 MySQL 大小写敏感的方法 在 MySQL 中,大小写敏感性受到操作系统、文件系统和 MySQL 配置的影响。为了确保大小写敏感,可以通过修改 MySQL 的配置文件 `my.cnf` 来实现[^2]。 #### 修改 MySQL 配置文件 编辑 MySQL 的配置文件 `my.cnf`,通常位于 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`。使用文本编辑器打开文件并添加以下参数: ```bash [mysqld] lower_case_table_names=1 ``` 此参数的作用是强制将所有转换为小写存储,并忽略大小写差异。设置完成后,保存文件并重启 MySQL 服务以使更改生效。 #### 重启 MySQL 服务 根据操作系统的不同,重启 MySQL 服务的命令可能有所不同。例如,在 Linux 系统中可以使用以下命令: ```bash sudo systemctl restart mysql ``` 或者: ```bash sudo service mysql restart ``` #### 注意事项 - 在设置 `lower_case_table_names=1` 后,MySQL 将不再区分大小写。如果数据库中已经存在,则需要重新初始化数据库以确保一致性[^4]。 - 如果在 Windows 系统上运行 MySQL,默认情况下 `lower_case_table_names` 已经设置为 `1`,因此无需额外配置[^1]。 通过上述方法,可以有效避免因大小写敏感而导致的问题,同时确保在不同环境中获得一致的行为。 ```python # 示例:检查 MySQL 配置是否生效 import mysql.connector try: connection = mysql.connector.connect( host="localhost", user="root", password="your_password", database="test_db" ) if connection.is_connected(): print("MySQL configuration is working correctly.") except Exception as e: print(f"Error: {e}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值