2017-11-04 9 views
1

私はデータベース、テーブルを作成し、作成したテーブルにデータを挿入するmysqlスクリプトを作成しています...しかし、私はubuntu terminal..iを使用してデータベースとテーブルを作成する必要があります。 ...端末INSERTがMySQLに動作しない

echo "CREATE DATABASE "mydatabase"" | mysql -uroot -pPASSWORD; \ 
echo "DROP TABLE IF EXISTS "servers";" | mysql -uroot -pPASSWORD mydatabase; \ 
echo "CREATE TABLE "servers" (\ 
    "id" int(2) NOT NULL AUTO_INCREMENT, \ 
    "server" varchar(64) NOT NULL, \ 
    "ip" int(10) unsigned NOT NULL, \ 
    "panel" int(4) NOT NULL, \ 
    PRIMARY KEY ("id") \ 
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;" | mysql -uroot -pPASSWORD mydatabase; \ 
    echo "LOCK TABLES "servers" WRITE;" | mysql -uroot -pPASSWORD mydatabase; \ 

作品以上このコードをテーブルに何も挿入しないと、データベースとテーブルを作成し、次のコマンドは、端末からテーブルに挿入しないと、私はすべてのエラーを見つけることができませんでした...なぜ挿入されていませんしません。テーブルに?

echo "INSERT INTO servers (id, server, ip, panel) VALUES (1, \''+rows[0].server+'\', \'INET_ATON('+rows[0].ip+')\', '+rows[0].panel+');" | mysql -uroot -pPASSWORD mydatabase; \ 
echo "UNLOCK TABLES;" | mysql -uroot -pPASSWORD mydatabase; 
+0

は、私が聞いてもツール?自分のMacからコマンドラインツールを使用しても問題はありません。 –

+0

私はポータブルノードjs apkを作成し、すべての端末で実行するようにして、jsファイルを1つ作成して移植性を高めるようにしています。インストレーションとSQLダンプファイルに複数のファイルを使用したくないので... – John

+0

私の最初の推測は、insert文がある種のエスケープ問題を抱えていることです。 'echo'が端末の出力に直接向かうとき、あなたは何を見ますか? –

答えて

1

あなたはそれが出力か見て| mysqlせずにecho "INSERT…"を試してみてください。

通常は、あなたの質問に書いた1:その| mysql出力せずに

echo "INSERT INTO servers (id, server, ip, panel) VALUES (1, \''+rows[0].server+'\', \'INET_ATON('+rows[0].ip+')\', '+rows[0].panel+');" | mysql -uroot -pPASSWORD mydatabase; \ 

INSERT INTO servers (id, server, ip, panel) VALUES (1, \''+rows[0].server+'\', \'INET_ATON('+rows[0].ip+')\', '+rows[0].panel+'); 

あなたは今、あなたの脳にこれを評価しようとするまたはコピーとMySQLにそれを貼り付けることができます何が起こったのか見てみましょう。私は個人的には今私の頭脳でそれを解釈することができます。 "\ '' + rows [0] .server + '\"'の近くに構文エラーが生じます。

rowsはどこから来たのか分かりませんが、bashのrows[0].ipは法的な構文ではありません。言語を混在させていますか?それは動作しません。

サイドノート、あなたはここでバックスラッシュではなくたくさんの書類を使用する必要があり、それが読みやすくなります:あなたは配管のテキストではなく、コマンドラインに直接ログインのMySQLのにコマンドである理由

cat <<EOF | mysql … 
    CREATE TABLE "servers" (
    "id" int(2) NOT NULL AUTO_INCREMENT, 
    "server" varchar(64) NOT NULL, 
    "ip" int(10) unsigned NOT NULL, 
    "panel" int(4) NOT NULL, 
    PRIMARY KEY ("id") 
    ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 
EOF 
+0

エラー1行目でエラー1366(HY000)が返されます:不正な整数値:行1の 'ip'列の 'INET_ATON(192.168.28.32)'ですので、今修正しています。 – John

関連する問題