MySql(7)——Linux环境MySQL不区分大小写配置管理

MySQL大小写问题解决
文章介绍了MySQL在Linux环境下数据库名、表名等的大小写敏感问题,并提供了两种解决方案:一是修改my.cnf配置文件使MySQL不区分大小写;二是修改程序中Hibernate映射表名使用小写。

hibernate.util.JDBCExceptionReporter - SQL Error: 1146, SQLState: 42S02
  [ERROR] [2015-04-29 13:41:683] org.hibernate.util.JDBCExceptionReporter - Table 'aa.columninfoTotal' doesn't exist
  [ERROR] [2015-04-29 13:41:684] org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler - Exception occurred during processing request: could not initialize a collection: [com.future.cms.pojo.Columninfo.columninfoTotals#36]
  org.hibernate.exception.SQLGrammarException: could not initialize a collection: [com.future.cms.pojo.Columninfo.columninfoTotals#36]


MySQL数据库从windows迁到Linux上,结果程序跑不起来了,不停提示“*** table doesn't exist”,查了一下,linux下默认mysql是区分大小写的,具体规则如下:

MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:

1、数据库名与表名是严格区分大小写的;

2、表的别名是严格区分大小写的;

3、列名与列的别名在所有的情况下均是忽略大小写的;

4、变量名也是严格区分大小写的;

 

解决方案如下:

1、修改 my.cnf 配置文件

 

MySQL在Windows下都不区分大小写。

 

如果改成不区分大小写,修改、/etc/my.cnf,在[mysqld]后面加上lower_case_table_names=1,重启mysql服务即可。

 

如果 etc 下没有  my.cnf 文件,就自己创建一个

 

2、修改程序,Hibernate映射的时候,.hbm.xml里面的映射的时候表名字用小写;

 

 

 

转载于:https://www.cnblogs.com/xushuyi/articles/6812663.html

### MySQL 中的大小写敏感性 在 MySQL 中,数据库对于操作系统中的目录和文件而言具有对应关系。因此,操作系统的敏感性决定了数据库大小写敏感程度[^1]。 #### Windows 环境下 - **Windows** 是大小写敏感的操作系统,在此环境下创建的所有数据库也将现为大小写敏感。 #### Unix/Linux 环境下 - 对于大多数类型的 **Unix/Linux** 系统,默认情况下是大小写敏感的环境,这意味着在此类平台上创建的数据库将是区分大小写的。 为了改变这种行为,可以通过调整 `lower_case_table_names` 参数来控制 MySQL大小写敏感度: - 当该参数设为 `0` 时,示完全遵循操作系统的规则; - 设定为 `1` 则强制所有为小写字母并忽略输入的大写形式; - 如果设定成 `2` ,则允许混合模式——即存储时转换为小写但在查询时考虑大小写差异[^2]。 值得注意的是,一旦选择了特定值之后就应该轻易更改它,因为这可能会引起现有对象识别上的混乱甚至丢失数据的风险。 ```sql -- 查看当前设置 SHOW VARIABLES LIKE 'lower_case_table_names'; -- 修改配置文件 (my.cnf 或 my.ini),重启服务生效 [mysqld] lower_case_table_names=1 ``` ### PostgreSQL 中处理大小写的方式 相比之下,PostgreSQL 默认就是严格区分大小写的。然而,通过自定义 collation 可以实现某些场景下的大小写无关比较功能[^4]。例如,可以编写一个用于字符串对比的基础函数,使得即使两个字符串字母同也能被视作相等: ```sql CREATE FUNCTION test_ci_compare(TEXT, TEXT) RETURNS BOOLEAN AS $$ BEGIN RETURN LOWER($1) = LOWER($2); END; $$ LANGUAGE plpgsql IMMUTABLE STRICT; ``` 上述方法仅适用于简单的文本匹配需求;如果要更广泛地应用到整个数据库层面,则可能涉及到更多复杂的配置选项以及潜在性能开销等问题。 ### 影响因素分析 同的大小写策略会对应用程序开发带来同程度的影响: - 开发者需要特别注意跨平台移植过程中可能出现的字冲突问题; - SQL 脚本中涉及的对象引用应当保持一致性以免因大小写而导致错误; - 在设计阶段就应该明确规定好项目内部统一采用何种标准(全大写/全小写或其他约定俗成的形式)[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值