INSTALL COMPONENT component_name [, component_name ...
[SET variable = expr [, variable = expr] ...]
variable: {
{GLOBAL | @@GLOBAL.} [component_prefix.]system_var_name
| {PERSIST | @@PERSIST.} [component_prefix.]system_var_name
}
此語句會安裝一個或多個元件,並立即生效。元件會提供伺服器和其他元件可用的服務;請參閱第 7.5 節, 「MySQL 元件」。INSTALL COMPONENT
需要 mysql.component
系統資料表的 INSERT
權限,因為它會新增一列到該資料表以註冊元件。
範例
INSTALL COMPONENT 'file://component1', 'file://component2';
元件是使用以 file://
開頭的 URN 來命名的,該 URN 指出實作元件的程式庫檔案的基底名稱,該檔案位於 plugin_dir
系統變數所命名的目錄中。元件名稱不包含任何平台相關的檔案名稱後綴,例如 .so
或 .dll
。(這些命名細節可能會變更,因為元件名稱的解譯本身是由一項服務執行的,而元件基礎架構可以將預設的服務實作替換為替代實作。)
INSTALL COMPONENT
允許在安裝一個或多個元件時設定元件系統變數的值。SET
子句可讓您在需要時精確地指定變數值,而不會有其他形式的指定相關聯的不便或限制。具體而言,您也可以使用以下替代方式設定元件變數:
在伺服器啟動時,使用命令列或選項檔案中的選項,但這樣做需要重新啟動伺服器。這些值在您安裝元件之前不會生效。您可以在命令列上指定元件的無效變數名稱,而不會觸發錯誤。
在伺服器執行時,透過
SET
語句動態設定,這樣您可以修改伺服器的操作,而無需停止並重新啟動它。不允許設定唯讀變數。
可選的 SET
子句僅將值或多個值套用於 INSTALL COMPONENT
語句中指定的元件,而不是該元件的所有後續安裝。SET GLOBAL|PERSIST
適用於所有類型的變數,包括唯讀變數,而無需重新啟動伺服器。您使用 INSTALL COMPONENT
設定的元件系統變數優先於來自命令列或選項檔案的任何衝突值。
範例
INSTALL COMPONENT 'file://component1', 'file://component2'
SET GLOBAL component1.var1 = 12 + 3, PERSIST component2.var2 = 'strings';
省略 PERSIST
或 GLOBAL
等同於指定 GLOBAL
。
在 SET
中為任何變數指定 PERSIST
,會在 INSTALL COMPONENT
載入元件之後,但在更新 mysql.component
資料表之前,立即無聲地執行 SET PERSIST_ONLY
。如果 SET PERSIST_ONLY
失敗,則伺服器會卸載先前載入的所有新元件,而不會將任何內容保存到 mysql.component
。
SET
子句僅接受正在安裝的元件的有效變數名稱,並針對所有無效名稱發出錯誤訊息。不允許將子查詢、預存函式和彙總函式作為值運算式的一部分。如果您安裝單個元件,則不必在變數名稱前面加上元件名稱。
雖然使用 SET
子句指定變數值與命令列類似,但它在變數註冊時立即可用,但 SET
子句處理布林變數的無效數值值的方式存在明顯差異。例如,如果您將布林變數設定為 11 (component1.boolvar = 11
),您會看到以下行為:
SET
子句產生 true命令列產生 false (11 既不是 ON 也不是 1)
如果發生任何錯誤,則語句會失敗且沒有任何效果。例如,如果元件名稱有誤、指定的元件不存在或已安裝,或元件初始化失敗,就會發生這種情況。
載入器服務會處理元件載入,其中包含將已安裝的元件新增至作為登錄檔的 mysql.component
系統資料表。對於後續的伺服器重新啟動,mysql.component
中列出的任何元件都會在啟動序列期間由載入器服務載入。即使伺服器是以 --skip-grant-tables
選項啟動,也會發生這種情況。
如果元件依賴於登錄檔中不存在的服務,而且您嘗試安裝該元件,而沒有同時安裝提供其所依賴服務的元件,則會發生錯誤
ERROR 3527 (HY000): Cannot satisfy dependency for service 'component_a'
required by component 'component_b'.
為避免此問題,請在同一個語句中安裝所有元件,或在安裝依賴的元件之後安裝其所依賴的任何元件。
對於金鑰環元件,請勿使用 INSTALL COMPONENT
。請改用資訊清單檔案設定金鑰環元件載入。請參閱第 8.4.4.2 節, 「金鑰環元件安裝」。