我的MySQL數據庫包含幾個表,使用不同的存儲引擎 (特別是myisam和innodb)。我怎樣才能找出哪些表所使用的引擎 ?如何檢查特定表的MySQL引擎類型?
回答
SHOW TABLE STATUS WHERE Name = 'xxx'
這會給你(除其他事項外)的Engine
列,這是你想要的。
SHOW CREATE TABLE <tablename>;
分辨率較低,但比SHOW TABLE STATUS
更具可讀性。
或只是
show table status;
只是,這將LLIST您的數據庫中的所有表。
由於某種原因在我的情況下返回0行... – 2014-01-16 16:10:17
要顯示數據庫中的所有表及其引擎列表,使用SQL查詢:
替換dbname
用你的數據庫名稱。
位一個調整到Jocker的迴應(我會發布的評論,但我沒有足夠的人緣還):
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
這不包括在列表MySQL的意見,不具有一個引擎。相較於
SHOW CREATE TABLE <tablename>;
的\G
伎倆輸出
SHOW CREATE TABLE <tablename>\G
將其格式化好得多,也記住了很多其他的查詢/命令非常有用。
去INFORMATION_SCHEMA數據庫中,你會發現那麼「表」表中選擇它;
MySQL的「使用INFORMATION_SCHEMA; MySQL的「選擇表名,從表引擎;
mysqlshow -i <database_name>
將顯示特定數據庫的所有表的信息。
mysqlshow -i <database_name> <table_name>
只會爲特定表格這樣做。
另一種方式,也許是單個或匹配表集合的最短拿到狀態:
SHOW TABLE STATUS LIKE 'table';
然後,您可以使用LIKE操作符,例如:
SHOW TABLE STATUS LIKE 'field_data_%';
如果你是一個linux用戶:
爲了顯示mysql服務器上所有數據庫的所有表的引擎,沒有表information_schema
,mysql
,performance_schema
:
less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------"; mysql -e "use $i; show table status;"; done } | column -t)
如果你至少在linux上,你可能會喜歡這個。
將打開less
中所有表格的所有信息,請按-S
截斷過長的行。
輸出示例:
--------------------information_schema--------------------
Name Engine Version Row_format Rows Avg_row_length Data_length Max_data_length Index_length Data_free Auto_increment Create_time Update_time Check_time C
CHARACTER_SETS MEMORY 10 Fixed NULL 384 0 16434816 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATIONS MEMORY 10 Fixed NULL 231 0 16704765 0 0 NULL 2015-07-13 15:48:45 NULL N
COLLATION_CHARACTER_SET_APPLICABILITY MEMORY 10 Fixed NULL 195 0 16357770 0 0 NULL 2015-07-13 15:48:45 NULL N
COLUMNS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
COLUMN_PRIVILEGES MEMORY 10 Fixed NULL 2565 0 16757145 0 0 NULL 2015-07-13 15:48:45 NULL N
ENGINES MEMORY 10 Fixed NULL 490 0 16574250 0 0 NULL 2015-07-13 15:48:45 NULL N
EVENTS MyISAM 10 Dynamic NULL 0 0 281474976710655 1024 0 NULL 2015-07-13 15:48:45 2015-07-13 1
FILES MEMORY 10 Fixed NULL 2677 0 16758020 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_STATUS MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
GLOBAL_VARIABLES MEMORY 10 Fixed NULL 3268 0 16755036 0 0 NULL 2015-07-13 15:48:45 NULL N
KEY_COLUMN_USAGE MEMORY 10 Fixed NULL 4637 0 16762755 0
.
.
.
如果你使用MySQL的工作臺,您可以用鼠標右鍵單擊該表並選擇「更改表」。
在該窗口中,您可以看到您的表格引擎並更改它。
- 1. MySQL:如何檢查varbinary類型中的特定值?
- 2. Mysql導入引擎類型表HEAP
- 3. 如何判斷是否檢查(啓用)特定的TTS引擎?
- 4. 如何查找檢查特定類類型的行數?
- 5. 如何在使用DataMapper時指定mysql存儲引擎類型?
- 6. Redis與Mysql引擎類型的內存
- 7. MySQL表引擎
- 8. 選擇Mysql引擎處理大型「類型值」表
- 9. 如何更改MySQL上的存儲引擎類型?
- 10. 的Javascript運行時類型檢查引擎
- 11. 如何查詢特定類型的NHibernate?
- 12. MYSQL引擎如何工作查詢
- 13. 如何在try塊中檢查特定類型的OSError?
- 14. 如何檢查Json是否匹配特定的C#類型?
- 15. 如何檢查特定類型的方法是否存在?
- 16. 檢查特定列表索引的子類
- 17. 如何檢查特定的列引用父表
- 18. 如何在編寫mysql存儲引擎時使用Field類型?
- 19. App引擎Java高級查詢類型
- 20. 檢查特定類的div
- 21. 如何檢查列表中的特定精靈類
- 22. 如何檢查正則表達式在類的特定功能?
- 23. 如何檢查表中是否有特定類別的物質?
- 24. 如何檢查類型是否定義?
- 25. 如何檢查類型是一個給定的模板類型
- 26. 如何打開特定圖表類型
- 27. Django - 如何引用泛型外鍵中的特定類型?
- 28. 類型推理引擎haskell
- 29. 如何在C#中引用特定的類類型?
- 30. 如何檢查值類型?
如果我的表被破壞,它只是顯示引擎= NULL,並有一個「註釋」告訴我修表。然而,在我知道如何修復表格之前,我猜我需要知道引擎(我沒有那麼誠實)。因此,@ Jocker的下面的評論對我更有幫助。 – harperville 2013-09-09 13:33:01
@Greg,我們應該使用這個還是Jocker的解決方案? – Pacerier 2015-02-24 05:30:26
@Prier - 兩者都很好。不同之處在於這個解決方案給出了一個表的信息,而Jocker的解決方案顯示了數據庫中所有表的引擎類型(同時也具有更好的可讀性)。 – kramer65 2016-03-20 08:36:56