您在 MySQL Shell 中發出的程式碼會儲存在歷史記錄中,然後可以使用向上和向下箭頭鍵來存取。您也可以使用增量歷史記錄搜尋功能來搜尋歷史記錄。若要搜尋歷史記錄,請使用 Ctrl+R 向後搜尋,或使用 Ctrl+S 向前搜尋歷史記錄。搜尋啟動後,輸入字元會搜尋歷史記錄中符合的任何字串,並顯示第一個符合的字串。使用 Ctrl+S 或 Ctrl+R 來搜尋目前搜尋詞彙的其他相符項目。輸入更多字元可進一步精簡搜尋。在搜尋期間,您可以按箭頭鍵,從目前的搜尋結果繼續逐步瀏覽歷史記錄。按 Enter 鍵以接受顯示的相符項目。使用 Ctrl+C 取消搜尋。
history.maxSize
MySQL Shell 組態選項會設定要儲存在歷史記錄中的最大項目數。預設值為 1000。如果歷史記錄項目數超過已設定的最大值,則會移除並捨棄最舊的項目。如果最大值設定為 0,則不會儲存任何歷史記錄項目。
依預設,歷史記錄不會在工作階段之間儲存,因此當您結束 MySQL Shell 時,目前工作階段期間發出的歷史記錄會遺失。您可以透過啟用 MySQL Shell history.autoSave
選項,在工作階段之間儲存您的歷史記錄。例如,若要永久變更此設定,請發出
mysqlsh-js> \option --persist history.autoSave=1
當啟用 history.autoSave
選項時,歷史記錄會儲存在 MySQL Shell 組態路徑中,在 Linux 和 macOS 上為 ~/.mysqlsh
目錄,或在 Windows 上為 %AppData%\MySQL\mysqlsh
資料夾。您可以在所有平台上定義環境變數 MYSQLSH_USER_CONFIG_HOME
,來覆寫此路徑。儲存的歷史記錄會由 MySQL Shell 自動建立,且只能由擁有者使用者讀取。如果無法讀取或寫入歷史記錄檔案,MySQL Shell 會記錄錯誤訊息,並略過讀取或寫入作業。歷史記錄會依使用中的語言分割,檔案名稱為 history.sql
、history.js
和 history.py
。
發出 MySQL Shell \history
命令會依發出順序顯示歷史記錄項目,以及其歷史記錄項目編號,該編號可與 \history delete
命令搭配使用。您可以手動刪除個別歷史記錄項目、指定數字範圍的歷史記錄項目,或歷史記錄的結尾。您也可以使用 entry_number
\history clear
手動刪除整個歷史記錄。當您結束 MySQL Shell 時,如果 history.autoSave
組態選項已設定為 true
,則會儲存歷史記錄檔案中剩餘的歷史記錄項目,並將其編號重設為從 1 開始。如果 shell.options["history.autoSave"]
組態選項設定為 false
(預設值),則會清除歷史記錄檔案。
只有您在 MySQL Shell 提示字元中以互動方式輸入的程式碼才會新增至歷史記錄。間接或內部執行的程式碼 (例如當執行 \source
命令時) 不會新增至歷史記錄。當您發出多行程式碼時,新行字元會在歷史記錄項目中移除。如果多次發出相同的程式碼,則只會在歷史記錄中儲存一次,減少重複。
您可以使用 --histignore
命令選項,自訂新增至歷史記錄的項目。此外,當在 SQL 模式中使用 MySQL Shell 時,您可以設定不應新增至歷史記錄的字串。當您使用 \sql
命令搭配查詢,在另一個語言處於使用中狀態時執行單一 SQL 陳述式時,也會套用此歷史記錄忽略清單。
依預設,符合 glob 模式 IDENTIFIED
或 PASSWORD
的字串不會新增至歷史記錄。若要設定要比對的其他字串,請使用 --histignore
命令選項,或 shell.options["history.sql.ignorePattern"]
。您可以指定多個字串,並以冒號 (:) 分隔。歷史記錄比對使用不區分大小寫的 glob 模式比對。支援的萬用字元為 * (比對任何 0 個或多個字元) 和 ? (比對正好 1 個字元)。預設字串指定為 "*IDENTIFIED*:*PASSWORD*"
。
即使歷史記錄忽略清單適用,也始終可以按向上箭頭取得最近執行的陳述式。這是為了讓您可以進行更正,而無需重新輸入所有輸入。如果篩選適用於最近執行的陳述式,則會在輸入另一個陳述式後立即從歷史記錄中移除,或者在執行陳述式後立即結束 MySQL Shell。