终端INSERT到MySQL不工作

时间:2017-11-04 10:13:55

标签: mysql terminal

我正在创建创建数据库,表并将数据插入到创建的表中的mysql脚本...但是我需要使用ubuntu terminal..i成功创建数据库和表,但我的INSERT sql语句不会在表中插入任何内容...

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;

1 个答案:

答案 0 :(得分:1)

您应该在没有echo "INSERT…"的情况下尝试| 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; \

没有| mysql输出:

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

您现在可以尝试在大脑中对此进行评估,或者将其复制并粘贴到MySQL以查看发生的情况。我个人现在能够在我的大脑中解释它,它产生"语法错误附近''' + rows [0] .server +' \&#39 ;'"

我不知道rows来自哪里,但bash中的rows[0].ip不是合法语法,你在混合语言吗?它不会工作。

旁注,你应该在这里使用文档而不是大量的反斜杠,它会更具可读性:

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