文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


15.7.4.3 INSTALL COMPONENT 陳述式

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';

省略 PERSISTGLOBAL 等同於指定 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 節, 「金鑰環元件安裝」