Mysql的Table doesn't exist問題及解決
Mysql Table doesn't exist問題
程序連接Mysql的時候總是提示表不存在,Table 'xx.QRTZ_LOCKS' doesn't exist
查詢了下,數(shù)據(jù)庫明明是有這個表的,搞了許久,
網上據(jù)說是因為數(shù)據(jù)庫對表的大小寫設置問題,設置忽略大小寫即可,
修改mysql數(shù)據(jù)庫配置
在服務運行目錄找到my.ini或者my.cnf文件
打開文件,找到[mysqld]在下面增加一行
lower_case_table_names=1 (0:大小寫敏感;1:大小寫不敏感)
重啟MySQL服務
Mysql: "Table 'xx.XXXX' doesn't exist"
當通過Spring-Data JPA進行數(shù)據(jù)庫查詢時,后臺返回查詢語句,將查詢語句粘貼,到數(shù)據(jù)庫執(zhí)行.返回Table 'xx.XXXX' doesn't exist 提示數(shù)據(jù)庫沒有這張表.
嘗試解決
原因,服務器是Linux環(huán)境下,因此對數(shù)據(jù)庫表名大小寫敏感,在使用別名時會出現(xiàn)查詢失敗.因此需要將數(shù)據(jù)庫配置文件進行修改,使其大小寫不敏感.
如果忘記了配置文件的位置,可以通過find / -name my.cnf進行查找
在配置文件中,添加
# 是否允許數(shù)據(jù)對象不區(qū)分大小寫,0敏感,1敏感? lower_case_table_names=1
重啟mysql應用后再試,問題解決.
查看服務狀態(tài)
service mysqld status
重啟服務命令
service mysqld restart
如果就此解決,請忽略以下內容…
以上方式僅支持尚未有數(shù)據(jù)表出現(xiàn)時修改,否則啟動失敗.錯誤日志
Different lower_case_table_names settings for server ('1') and data dictionary ('0').
Data Dictionary initialization failed.
lower_case_table_names 參數(shù)值
0 創(chuàng)建的數(shù)據(jù)庫對象,根據(jù)創(chuàng)建時指定大小寫形式儲存,同時在比較區(qū)分大小寫。如果你有不區(qū)分大小寫的文件名(如Windows或Mac系統(tǒng))的系統(tǒng)上運行MySQL這個變量設置為0。如果使用–lower-case-table-names=0 不區(qū)分大小寫的文件系統(tǒng)強制此變量為0 并MyISAM使用不同的字母表訪問 表名,則可能導致索引損壞。
1 表名以小寫形式存儲在磁盤上,名稱比較不區(qū)分大小寫。MySQL在存儲和查找時將所有表名轉換為小寫。
2 數(shù)據(jù)庫對象根據(jù)創(chuàng)建時指定的大小寫形式存儲在磁盤上,但MySQL在查找時將它們轉換為小寫。名稱比較不區(qū)分大小寫。這僅適用于不區(qū)分大小寫的文件系統(tǒng)!
我的解決方式
向Oracle低頭,將表名改為大寫
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vs如何讀取mysql中的數(shù)據(jù)并解決中文亂碼問題
這篇文章主要介紹了vs如何讀取mysql中的數(shù)據(jù)并解決中文亂碼問題,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''
Mysql進行數(shù)據(jù)備份,還原后進行回帖,出現(xiàn)以下錯誤代碼,其實主要是導入數(shù)據(jù)重復的問題,將現(xiàn)在的數(shù)據(jù)表清空,重新導入即可2012-07-07MySQL數(shù)據(jù)同步出現(xiàn)Slave_IO_Running:?No問題的解決
本人最近工作中遇到了Slave_IO_Running:NO報錯的情況,通過查找相關資料終于解決了,下面這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)同步出現(xiàn)Slave_IO_Running:?No問題的解決方法,需要的朋友可以參考下2023-05-05