linux如何把mysql表名换成小写_让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)...
把 Windows 下的應(yīng)用部署到 Linux 下,使用到了 Quartz 集群的特性,所以建了 MySql 的中間表,一啟動看到報(bào)錯:
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 客戶端連接到那個數(shù)據(jù)庫,看到 qrtz_triggers 表確確實(shí)實(shí)是存在的,MySQL 也是安裝在 Linux 下的。在大小寫敏感的操作系統(tǒng)中,估摸著會不會是表名大小的因素呢? 于是把 qrtz_triggers 改為大寫的 QRTZ_TRIGGERS,再次啟動應(yīng)用服務(wù)器,這時候出現(xiàn)的是:
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 表。這樣的現(xiàn)像面前說明在 Linux 下 MySQL 表明是區(qū)分大小寫是暴露無疑了,以前多是在 windows 下寫程序,而且代碼中的 sql 語句表明也都是用小寫,所以未碰到?,F(xiàn)在 Quartz 偏喜歡大寫,問題也就這樣來了。
知道原因,找解決辦法就可有的放矢了,google mysql linux 表名不區(qū)分大小寫,答案立馬找到:
需要改 MySQL 的配置文件,Linux 下 MySQL 的配置文件可能是 /etc/my.cnf,或 /etc/mysql/my.cnf,這依賴于你的安裝方式。假如是 /etc/my.cnf,那么執(zhí)行
sudo vi /etc/my.cnf
在 [mysqld] 節(jié)中添加:
lower_case_table_names=1
然后保存,用 sudo /etc/init.d/mysql restart 重啟 MySQL 服務(wù)便讓 Linux 系統(tǒng)對表名大小寫不敏感了。
其實(shí)準(zhǔn)確來說不是說 Linux 對于 MySQL 表名忽略大小寫,而是應(yīng)用上面的配置后,MySQL 服務(wù)程序會來自于應(yīng)用程序里的請求的表名轉(zhuǎn)換為小寫,如你查詢 select*? UNMI_TABLE,MySQL 會認(rèn)為是查詢的 select * from unmi_table,所以在加入
lower_case_table_names=1
之前時你必須把表名都改為小寫。也就是在創(chuàng)建表時都用小寫名字,如果創(chuàng)建的表名為 UNMI_TABLE,那么程序中無論是執(zhí)行 select * from UNMI_TABLE 還是執(zhí)行 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]
因?yàn)?MySQL 服務(wù)程序認(rèn)為表名就是小寫的 unmi_table,而在數(shù)據(jù)庫中的表名不是這樣子的。
而且此時在 MySQL 客戶端都無法把 QRTZ_TRIGGERS 改成 qrtz_triggers. 因?yàn)楸砻拇笮懯桥c文件系統(tǒng)中的數(shù)據(jù)目錄下的 frm 文件相對應(yīng)的。
總結(jié)
以上是生活随笔為你收集整理的linux如何把mysql表名换成小写_让 MySQL 在 Linux 下表名不区分大小写(实为表名全小写)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: telnet linux 命令详解,解析
- 下一篇: Java面向对象编程篇6——注解与反射