MySQLの経験はありません。私の上司はMySQLデータベースに対してoptimize
を実行しました。たくさんの意見に対して、私たちはメッセージを得ました
「tablexyz」はベーステーブルではありません
そして次のメッセージは
壊れた
これはビューに対するもののようであり、ベーステーブルに対するこれらのエラーメッセージは表示されませんでした。
これは誤ったエラーメッセージのように見えますか、それともテーブルに問題がありますか?
実行できません OPTIMIZE TABLE
ビューに対して。エラーメッセージがCorrupt
になる理由がわかります
Mysqlでは、ビューは INFORMATION_SCHEMA.TABLES のテーブルとして表されます。
私は以前にこの観点から見解を話しました
ただし、 INFORMATION_SCHEMA.TABLES のビューには、ストレージエンジンとしてNULL
があります。
Mar 21, 2012
: ビューの実行プランを取得するにはどうすればよいですか?Nov 23, 2011
: MySQLでビューのデータ型を定義するにはどうすればよいですか?したがって、最適化するストレージエンジンが必要です。ストレージエンジンがNULLであるため、Corrupt
エラーメッセージは理解できます。したがって、エラーメッセージを気にする必要はありません。とにかく走れ - OPTIMIZE TABLE
基になるベーステーブル。
これを経験したので調べ始めました
SHOW CREATE TABLE tablexyz;
これは
HEADER RESULT NAMES
View, Create View, character_set_client, collation_connection
そして、2列目に含まれています:
CREATE ALGORITHM=UNDEFINED DEFINER=`%someone%`@`%some_ol_Host_name%`
SQL SECURITY DEFINER
VIEW `tablexyz`.`view_tablexyz` AS
SELECT `tablexyz`.`some_column_name`,
`tablexyz`.`some_more_column_names`
FROM `tablexyz`
JOIN `tableabc` ON `tablexyz`.`id` = `tableabc`.`id`
WHERE `tablexyz`.`some_column_names` = 'somevalues'
GROUP BY `tablexyz`.`some_column_names`;
私にとって...まあ、ビューにすぎないことが判明しました。
注意すべき最後の1つ:
USE tablexyz;
ANALYZE TABLE tablexyz; -- Corrupt
CHECK TABLE tablexyz; -- OK
REPAIR TABLE tablexyz; -- Corrupt
チェックテーブルは、メッセージに一貫性がないため、誤検知を提供します。
ANALYZE TABLE & REPAIR TABLE state that the table is corrupted even though it is a view.
そしてCHECK TABLE
は、テーブルに問題がないと言っています
# Table, Op, Msg_type, Msg_text
'tablexyz.tablexyz_view', 'check', 'status', 'OK'
奇妙だと思ったが ドキュメント によれば大丈夫だ
乾杯、ジェイ