異常:用shell執行Gbase入庫的腳本,一直報錯,逐一排查問題。
異常一:如標題 sed: -e expression #1, char 103: unknown option to `s'
檢查發現入庫的腳本中有一個傳入服務器密碼的變量替換未成功,腳本中中有一句變量(變量爲服務器密碼)替換的命令爲
sed -i "s#pwd#$pwd#g" dir/test.sql
發現密碼中本身帶有“#“(ahfih#3rjkjhJ)號,那麼替換命令中的#符會報錯,修改#爲!
sed -i "s!pwd!$pwd!g" dir/test.sql
執行腳本替換成功,密碼被正常替換到sql文件裏
異常二:執行入庫依然報錯,提示連不上服務器,但是同樣的腳本在其他服務器上是沒問題的,所以
推測依然是密碼中帶#號的問題,因爲#在shell中代表註釋符,但是命令也是用''引用的,但是文件是.sql後綴的sql文件,可能寫到sql文件裏‘’沒起作用,所以只能修改服務器密碼了,改爲(lkjfald%8238j),依然入庫失敗,但是異常代碼變了
異常三:檢查腳本依然沒發現問題,只能一步步推測問題所在了,推測一:%號作爲一個特殊符號,在sql文件裏也可能阻礙了,sql文件的執行。繼續修改服務器密碼(fhkh!7nkfkdu)
入庫成功!
所以建議大家入庫的時候注意,.sql文件裏慎用”#,%“等特殊符號。
個人觀點,歡迎指正。
本人原創,轉載請註明出處。