Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


17.4.1.25 レプリケーションと予約語

古いマスターから新しいスレーブに複製しようとするとき、およびスレーブで実行中の新しい MySQL バージョンで予約語である識別子をマスター上で使用するときに、問題が発生する可能性があります。たとえば、4.1 以降のスレーブに複製している 4.0 マスター上で名前が current_user のテーブルカラムを使用しているときです。CURRENT_USER は MySQL 4.1 以降で予約語であるためです。このような場合、レプリケーションはエラー 1064 You have an error in your SQL syntax... で失敗する可能性があります (予約語を使用して名前が付けられたデータベースまたはテーブル、または予約語を使用して名前が付けられたカラムを持つテーブルが、レプリケーションから除外されていても)。これは、各 SQL イベントが実行前にスレーブによって解析される必要があるため、スレーブはどのデータベースオブジェクトが影響されるかがわかるという事実によります。スレーブは、イベントが解析されたあとにのみ、--replicate-do-db--replicate-do-table, --replicate-ignore-db、および --replicate-ignore-table で定義されたフィルタリングルールを適用できます。

スレーブが予約語と見なす、マスター上のデータベース、テーブル、またはカラム名の問題を回避するには、次のいずれかを行ってください。

  • マスター上で 1 つまたは複数の ALTER TABLE ステートメントを使用して、これらの名前がスレーブ上で予約語と見なされるデータベースオブジェクトの名前を変更するか、古い名前を使用する SQL ステートメントを変更して代わりに新しい名前を使用してください。

  • これらのデータベースオブジェクト名を使用する SQL ステートメントで、それらの名前をバッククォート文字 (`) で囲まれた識別子として書いてください。

MySQL バージョン別の予約語の一覧については、「MySQL Server Version Reference」の「Reserved Words」を参照してください。識別子を囲むルールについては、セクション9.2「スキーマオブジェクト名」を参照してください。