Table 'barfoo_datacenter_config.parttemplates' doesn't exist------Mysql
錯誤ERROR Table 'barfoo_datacenter_config.parttemplates' doesn't exist;
問題解釋:
1、發生該錯誤的情形。我是將別人的數據庫目錄下的data文件夾直接復制過來的,里面有三個數據庫mysql、test和barfoo_datacenter_config,主要想要barfoo_datacenter_config數據庫(是拷貝,不是備份),而且barfoo_datacenter_config是使用innodb作為存儲引擎的,這兩方面綜合起來就導致了1146這個錯誤(Table 'barfoo_datacenter_config.parttemplates' doesn't exist)。?
??????
2、因為要使用innodb做存儲引擎,所以要對my.ini文件進行相應的修改。在my.ini文件中,你可以找到關于innodb的相關設置,但是被注釋掉了。因為mysql5.1版本后,innodb不在作為默認的設置了。首先將skip-innodb注釋掉,然后需要設置正確innodb的相關參數。???
????
3、采用innodb存儲引擎,關系到data文件夾下面的一些文件:ib_logfile0、ib_logfile1和ibdata1,另外還有一個就是數據庫名下面的眾多.frm文件。先對這幾個文件作簡要介紹。? ? ?
ib_logfile0和ib_logfile1是關于數據庫的一些日志文件;????? .frm文件是數據庫中很多的表的結構描述文件;?????? ibdata1文件時數據庫的真實數據存放文件。?到mysql目錄下的bin文件夾下運行命令:? ? ?
mysql?--console此時,你會發現很多的錯誤提示,該命令就是對環境進行測試的。如果你不理會這些錯誤,進入數據庫,用show tables;命令發現數據庫表存在,但是執行select等操作就會出現1146:Table doesn’t exist這個錯誤了。?????
其實這是由ibdata1文件的錯誤引起的,這個應該在日志文件ib_logfile0和ib_logfile1中找到,于是把ibdata1文件刪除掉,再次執行該命令,發現沒有提示錯誤了,但進入數據庫以后,操作仍就導致1146這個錯誤。后來仔細一下,也是,你說你把ibdata1文件刪除,相當于把數據庫的真實數據刪除了,這時你就會問為什么數據庫表還存在呢,都能看到,因為數據庫表結構的描述是在.frm的眾多文件中的,所以能通過show tables;查看到。?那么問題就來了:ibdata1文件是從別人那里拷貝過來的,為什么在那邊能用,到我這邊就不能用了呢?這就是最核心的問題所在,因為mysql是采用緩沖方式來將數據寫入到ibdata1文件中的,這正是fflush()函數存在的理由。因此當別人的mysql在運行時,你對data文件夾進行拷貝,即對ibdata1進行拷貝肯定會導致該文件中的數據出錯的。? ??
解決方法:
首先在自己的mysql下,建立一個你即將要拷貝的數據庫(數據庫名要一樣,里面不需要建表),然后將所有的.frm文件拷貝到你建的數據庫文件夾下,再次進入mysql,用show??tables查看表是否已經建立起來了。然后停止你自己的mysql服務,發現在data文件下面已經有ib_logfile0、ib_logfile1和ibdata1三個文件了,之后停掉別人的mysql服務,只將ibdata1文件拷貝過來進行覆蓋,最后啟動你自己的mysql服務就可以對數據庫進行正常操作了
轉載于:https://blog.51cto.com/liulihuan/1678833
總結
以上是生活随笔為你收集整理的Table 'barfoo_datacenter_config.parttemplates' doesn't exist------Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思维+multiset ZOJ Mont
- 下一篇: Java学习笔记二:数据类型