让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)
把 Windows 下的应用部署到 Linux 下,使用到了 Quartz 集群的特性,所以建了 MySql 的中间表,一启动看到报错:
Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't retrieve trigger: Table 'unmijob.QRTZ_TRIGGERS' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'unmijob.QRTZ_TRIGGERS' doesn't exist]
用 MySQL 客户端连接到那个数据库,看到 qrtz_triggers 表确确实实是存在的,MySQL 也是安装在 Linux 下的。在大小写敏感的操作系统中,估摸着会不会是表名大小的因素呢? 于是把 qrtz_triggers 改为大写的 QRTZ_TRIGGERS,再次启动应用服务器,这时候出现的是:
Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't retrieve trigger: Table 'unmijob.QRTZ_CRON_TRIGGERS' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'unmijob.QRTZ_CRON_TRIGGERS' doesn't exist]
说明表 QRTZ_TRIGGERS 表是找到了,找不到下面的 QRTZ_CRON_TRIGGERS 表。这样的现像面前说明在 Linux 下 MySQL 表明是区分大小写是暴露无疑了,以前多是在 windows 下写程序,而且代码中的 sql 语句表明也都是用小写,所以未碰到。现在 Quartz 偏喜欢大写,问题也就这样来了。
知道原因,找解决办法就可有的放矢了,google mysql linux 表名不区分大小写,答案立马找到:
需要改 MySQL 的配置文件,Linux 下 MySQL 的配置文件可能是 /etc/my.cnf,或 /etc/mysql/my.cnf,这依赖于你的安装方式。假如是 /etc/my.cnf,那么执行
sudo vi /etc/my.cnf
在 [mysqld] 节中添加:
lower_case_table_names=1
然后保存,用 sudo /etc/init.d/mysql restart 重启 MySQL 服务便让 Linux 系统对表名大小写不敏感了。
其实准确来说不是说 Linux 对于 MySQL 表名忽略大小写,而是应用上面的配置后,MySQL 服务程序会来自于应用程序里的请求的表名转换为小写,如你查询 select* UNMI_TABLE,MySQL 会认为是查询的 select * from unmi_table,所以在加入
lower_case_table_names=1
之前时你必须把表名都改为小写。也就是在创建表时都用小写名字,如果创建的表名为 UNMI_TABLE,那么程序中无论是执行 select * from UNMI_TABLE 还是执行 select * from unmi_table 都会碰到类似下面的错误:
Invocation of init method failed; nested exception is org.quartz.JobPersistenceException: Couldn't retrieve trigger: Table 'unmijob.qrtz_triggers' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'unmijob.qrtz_triggers' doesn't exist]
因为 MySQL 服务程序认为表名就是小写的 unmi_table,而在数据库中的表名不是这样子的。
而且此时在 MySQL 客户端都无法把 QRTZ_TRIGGERS 改成 qrtz_triggers. 因为表名的大小写是与文件系统中的数据目录下的 frm 文件相对应的。
让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)的更多相关文章
- MySQL在Linux下的表名如何不区分大小写
MySQL在Linux下的表名如何不区分大小写 今天测试的时候,遇到一些问题,明明看到数据,就是查不出来;后来发现,在linux下, mysql的表名区分大小写,而在windows下是不区分,从w ...
- 【MySql】linux下,设置mysql表名忽略大小写
[障碍再现] 状况描述01: 在LINUX下调一个程序经常报出找不到表,但是我明明是建了表的, 测试的时候,遇到一些问题,从Windows平台访问虚拟机中的Web应用,经常报出找不到表 ...
- mysql在Linux下大小写敏感设置
默认情况下,mysql在windows下是不区分大小写的,但是mysql在linux下大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名 ...
- 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装
[MySQL]Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后, ...
- MySQL在linux下安装
mysql在linux下的安装 安装环境:系统是 centos6.5 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloa ...
- MySQL入门——Linux下安装后的配置文件
MySQL入门——Linux下安装后的配置文件 摘要:本文主要了解了在Linux环境下安装MySQL后的配置文件的位置,以及如何创建配置文件. 查看配置文件的加载顺序 找到mysqld的路径 通过wh ...
- linux中mysql表名默认区分大小写导致表找不到的问题
天将window的项目迁移到linux上面,然后登录时一直报用户表找不到的错误信息. 检查发现数据库中的表名是m_user, 后来才想起来是大小写问题, 找到问题原因,解决方案如下: 修改/etc/m ...
- mysql在linux下的安装
安装环境:系统是 centos6.5 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 下载版本:我这里选择的5.6. ...
- mysql在Linux下
Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root ? :: /bin/sh /usr/ ...
随机推荐
- 一段可以清理NSArray中的空对象的代码(递归)
- (NSArray *)clearAllNullObject{ NSMutableArray *array = [self mutableCopy]; ;i < array.count;i++ ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(4)
20145220&20145209&20145309信息安全系统设计基础实验报告(4) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132246 ...
- solr5.2 mysql 增量索引
前提:数据库里数据进行增删改操作时,相应的solr需要修改或者新建索引,之前从数据库中导入数据并创建索引的操作是全量创建,如果本身数据库数据量非常大,就需要增量创建索引 1./usr/local/sr ...
- GridView实现方块布局
效果如下: 先创建一个BaseViewHolder package com.example.griddemo; import android.util.SparseArray; import andr ...
- ACM集训的第一题
对于一群NP(2<=NP<=10)个要互送礼物的朋友,郭铮鹏要确定每个人送出的钱比收到的多多少. 在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人 ...
- LeetCode Counting Bits
原题链接在这里:https://leetcode.com/problems/counting-bits/ 题目: Given a non negative integer number num. Fo ...
- MAC使用MAMP构建自签名HTTPS环境
一.生成HTTPS自签名证书 1.下载最新的openssl的安装包,下载地址:https://www.openssl.org/source/ 2.解压最新版openssl,可以直接双击使用MAC自带的 ...
- pypi上传库
把程序打包上传到PyPi版本库中 转自 1 首先必须要按照以下文件结构 ├── douban │ ├── cli.py │ ├── douban.py │ ├── douban_token ...
- ibatis输入多个参数
ibatis输入多个参数 在ibatis中,会发现其输入参数只能有一个,于是当出现需要进行多个输入参数的时候,就要想点办法了,我看到的有以下两种比较好的方法能够解决这个问题1) 用String ...
- JS/JQ获取各种屏幕的高度和宽度
Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...