2016-06-14 287 views
-1

對於一些未知的原因中,「INFORMATION_SCHEMA.TABLES」的信息不符合實際的表:由MySQL困惑INFORMATION_SCHEMA.TABLES信息

首先,找到INFORMATION_SCHEMA.TABLES表名,有一個結果; 然後,從表名選擇*,它顯示錶不存在! /(ㄒoㄒ)/ ~~

我試着用同樣的名字創建一個新表(MyISAM引擎),它創建OK! 然後,從information_schema.tables中找到表名,有兩個結果! 而選擇*從表名顯示空集,這是正常的。

到現在爲止,表可以使用,但不能完全刪除。 如果刪除表,則返回「第一個」。

如下圖: all the step

我尋找了很久淨。但沒用。請幫助或嘗試給出一些想法如何實現這一點......

+0

你可以嘗試直接插入圖像的問題,不是每個人都遵循鏈接.. –

+0

謝謝你的建議,但我沒有足夠的聲譽直接插入圖像(我認爲是這樣)... /(ㄒ oㄒ)/ ~~ @StefanHegny –

+0

http://dev.mysql.com/doc/refman/5.7/en/database-use.html – GhostGambler

回答

1

圖片顯示沒有任何錯誤的我。當您運行此:

SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE 
TABLE_NAME = 'report_instance_performance_20160614 

,並得到一個結果,你可能得到一個結果,該名稱的表從那裏你跑了查詢不同的模式。這將是更有益的運行這看看是否有錯:

SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE 
TABLE_NAME = 'report_instance_performance_20160614' 

我的說法,該表在其他模式存在,但不是一個,你在從查詢運行的是,你得到當您嘗試時出現doesn't exist錯誤,並從中出現SELECT

接下來,當您創建該表的新實例,然後運行INFORMATION_SCHEMA.TABLES查詢時,您將得到兩個結果,因爲您現在在當前模式中創建了具有該名稱的表。如果該表已存在於您當前的模式中,那麼您將得到一個錯誤,即該模式中已存在該名稱的表。這進一步支持了我的斷言report_instance_performance_20160614存在於不同的模式中。

最後,由於表格是新創建的,並且您沒有在SELECT之前將任何東西寫入表格,所以表格將爲空是完全正常的。

+0

是的......你是對的。還有另一種模式...非常感謝你!對於這個問題,我非常抱歉,由於我的MySQL知識有限,對「INFORMATION_SCHEMA.TABLES」的理解還不夠徹底...... –

+0

您可以將答案標記爲正確,然後幫助其他人來看看此問題:) –