実現したいこと
ここに実現したいことを箇条書きで書いてください。
シェルスクリプトでmysqlに接続して、テーブルを操作したいです。
前提
現在シェルスクリプトでmysqlのテーブルを丸ごと入れ替えるというシェルを記述しています。
下記ソースコードで動作確認をしたところ接続がされず、エラーが出てしまいました。
不備があり接続ができていないと考えておりますが、具体的な原因が掴めておりません。
以下、外出ししているmy.confの内容です。
my.conf [client] user = root password = pass host = IPアドレス
発生している問題・エラーメッセージ
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
該当のソースコード
#!/bin/bash # 定数の定義 readonly MYSQL_SCHEMA="foo" readonly ROOT_DIRECTORY="/tmp/var" readonly CMD_MYSQL="mysql --defaults-file=$ROOT_DIRECTORY/my.conf -t $MYSQL_SCHEMA" readonly COL1_INSERT=○○/○○/○○/test1.csv readonly COL2_REPLACE=○○/○○/○○/test2.csv readonly COL3_INSERT=○○/○○/○○/test3.csv readonly COL4_REPLACE=○○/○○/○○/test4.csv #テーブル削除 truncateSqlTest="TRUNCATE TABLE TEST_TABLE;" truncateSqlTest1="TRUNCATE TABLE TEST_TABLE1;" #testデータ統合処理 ImportFile=test_import.csv cat ${COL1_INSERT} ${COL2_REPLACE} | $(sort -k 1n ,) > $ImportFile ImportFile1=test1_import.csv cat ${COL3_INSERT} ${COL4_REPLACE} | $(sort -k 1n ,) > $ImportFile1 #データベースインポート処理 loadSqlDate="LOAD DATA LOCAL INFILE \"${ImportFile}\" INTO TABLE "TEST_TABLE" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';" loadSqlDate1="LOAD DATA LOCAL INFILE \"${ImportFile1}\" INTO TABLE "TEST_TABLE1" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';" #sql実行 mysql -e "${CMD_MYSQL} ${truncatesqlTest} ${truncatesqlTest1} ${loadsqlDate} ${loadsqlDate1}"
試したこと
--defaults-file → --defaults-extra-fileに変更
補足情報(FW/ツールのバージョンなど)
初心者なので記述の仕方や余裕がありましたら、汎用性が聞くようなアドバイスも頂けたら嬉しいです。
宜しくお願い致します。
#sql実行
mysql -e "${CMD_MYSQL} ${truncatesqlTest} ${truncatesqlTest1} ${loadsqlDate} ${loadsqlDate1}"
となっていますが、これは、
#sql実行
${CMD_MYSQL} -e "${truncatesqlTest} ${truncatesqlTest1} ${loadsqlDate} ${loadsqlDate1}"
ではないでしょうか。(もしくはヒアドキュメントを使うなど)
