MySQL 8.0 リファレンスマニュアル


13.7.4.3 INSTALL COMPONENT ステートメント

INSTALL COMPONENT component_name [, component_name ] ...

このステートメントは、すぐにアクティブになる 1 つ以上のコンポーネントをインストールします。 コンポーネントは、サーバーおよびその他のコンポーネントで使用可能なサービスを提供します。セクション5.5「MySQL のコンポーネント」 を参照してください。 INSTALL COMPONENT では、コンポーネントを登録するために mysql.component システムテーブルに行が追加されるため、そのテーブルに対する INSERT 権限が必要です。

例:

INSTALL COMPONENT 'file://component1', 'file://component2';

コンポーネント名は、file://で始まり、plugin_dir システム変数で指定されたディレクトリにある、コンポーネントを実装するファイルのベース名を示す URN です。 コンポーネント名には、.so.dll などのプラットフォーム依存のファイル名接尾辞は含まれません。 (コンポーネント名の解釈自体がサービスによって実行され、コンポーネントインフラストラクチャによってデフォルトのサービス実装を代替実装に置き換えることができるため、これらのネーミング詳細は変更される可能性があります。)

エラーが発生した場合、ステートメントは失敗し、効果はありません。 たとえば、コンポーネント名が間違っている場合、名前付きコンポーネントが存在しないかすでにインストールされている場合、またはコンポーネントの初期化が失敗した場合に発生します。

ローダーサービスはコンポーネントのロードを処理します。これには、レジストリとして機能する mysql.component システムテーブルへのインストール済コンポーネントの追加が含まれます。 その後のサーバーの再起動では、mysql.component にリストされているコンポーネントは、起動シーケンス中にローダーサービスによってロードされます。 これは、サーバーが --skip-grant-tables オプションを使用して起動された場合でも発生します。

コンポーネントがレジストリに存在しないサービスに依存しており、依存するサービスを提供するコンポーネントもインストールせずにコンポーネントをインストールしようとすると、エラーが発生します:

ERROR 3527 (HY000): Cannot satisfy dependency for service 'component_a'
required by component 'component_b'.

この問題を回避するには、すべてのコンポーネントを同じステートメントでインストールするか、依存先のコンポーネントをインストールした後に依存コンポーネントをインストールします。


関連キーワード:  ステートメント, CREATE, コンポーネント, TABLE, DROP, サブクエリー, FUNCTION, SLAVE, インストール, 関数