先 docker exec
進入 web server,然後執行:
tootctl cache clear tootctl media remove
reference: How to intelligently clear the cache?
# 重建 media tootctl media refresh --force # 重建帳號相關檔案 tootctl accounts refresh --all
軟體開發、伺服器和生活瑣事
先 docker exec
進入 web server,然後執行:
tootctl cache clear tootctl media remove
reference: How to intelligently clear the cache?
# 重建 media tootctl media refresh --force # 重建帳號相關檔案 tootctl accounts refresh --all
用以下的 SQL 來建立新的 function:
CREATE FUNCTION myfunc(IN str TEXT) RETURNS TEXT RETURN '123';
執行以後會出現錯誤訊息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN str TEXT) returns TEXT return '123'' at line 1
將 function parameter 中的 IN
刪除以後就不會再出現錯誤訊息。
問題是按照 MySQL 官方文件中 create function statements 中的說明,IN
參數是 optional 的,可加可不加,但實際執行時加上 IN
就會出現上面的錯誤。
所以問題來了,是 MySQL 沒有按照文件中的規範實作?還是文件並沒有跟著 MySQL 的實作更新?
使用變數的方式主要有二種,一是使用在變數名稱地一個字元加上 @
,二是使用 DECLARE
宣告再 SET
。
要注意的是 @
開頭的變數 scope 為整個 session,也就是在不同 function / store procedure 都可以讀取數值、設定數值。如以下範例:
DELIMITER ;; CREATE FUNCTION hello() RETURNS text BEGIN SET @str = 'hello'; RETURN @str; END ;; DELIMITER ; DELIMITER ;; CREATE FUNCTION world() RETURNS text BEGIN SET @str = 'world'; SET @str = CONCAT(hello(), ' ', @str); RETURN @str; END ;; DELIMITER ; SELECT world() as result;
因為會讀、寫到同一個變數,所以輸出會是 hello hello
。
若使用 DECLARE
宣告變數,則開變數的 scope 僅在 loop、function、store procedure 中才有效。相同的範例,改使用 DECLARE
:
DELIMITER ;; CREATE FUNCTION hello() RETURNS TEXT BEGIN DECLARE str TEXT; SET str = 'hello'; RETURN str; END ;; DELIMITER ; DELIMITER ;; CREATE FUNCTION world() RETURNS TEXT BEGIN DECLARE str text; SET str = 'world'; SET str = CONCAT(hello(), ' ', str); RETURN str; END ;; DELIMITER ; SELECT world() AS result;
輸出結果為 hello world
。
參考 restic 官方文件,先建立 backup repository:
restic -r sftp:backup@host:/storage.server/backup-folder init
restic 會自動記錄檔案內容,在同一個 backup repository 的資料都會做差異性備份,檔案內容沒有更動的話,就不會再複製檔案內容,加快備份速度。
用 restic 備份伺服器的資料:
restic -r sftp:backup@host:/storage.server/backup-folder backup \ /etc /root /home /var/spool/mail/ \ --exclude-caches=true \ --cleanup-cache=true \ --exclude-if-present='.cache'
restic 也可以針對單一檔案做備份。以下是將 mysqldump 的資料直接 pipe 給 restic 做備份:
mysqldump --all-databases | restic -r sftp:backup@host:/storage.server/backup-folder backup --stdin
MAXXIS 這顆輪胎偏硬 (號稱漏氣還可以勉強騎到維修站),比較耐磨,側邊有防滑紋路:
米其林 S1 是軟胎,抓地力比較好,不過磨耗較快:
市區短程其實第二個款式就很夠用了。長程、山路我可能還是會選擇第一顆輪胎吧。