以下は私のサンプルコードです。
KEY_FILE=/tmp/key.txt
KEY=$(openssl rand 16)
echo $KEY > $KEY_FILE
ID=2345
source .mysqlCredentials.txt
MySqlCommand="mysql -h $IP -u $UserName -p$Password $DBName -e"
$MySqlCommand "INSERT INTO some_table ( ID , ssl_key ) VALUES (\"$ID\", \"$KEY\") ;"
私が得るエラーは次のとおりです。
+ mysql -h X.X.X.X -u root -ppassword database -e 'INSERT INTO some_table ( ID , ssl_key ) VALUES ("2345", "ïëC;+¹"ë'\''J£èMÑ") ;'
ERROR 1064 (42000) at line 1: 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 'ë'J£èMÑ")' at line 1
生成されたキーには、一重引用符、バックティック、二重引用符、スペースなどが表示されます。
このエラーをどのように克服できますか?
答え1
Rand文字列をBase64でエンコードしてみてはいかがでしょうか?こうして:
openssl rand -base64 16
処理する方が簡単です。