MySQL USE语句无效

时间:2015-10-16 09:14:14

标签: mysql bash

MySQL USE语句无法按预期工作。

我正在使用 mysql -e 命令连接USE和SELECT:

我有一个运行

的MySQL服务器
  

显示数据库;

     

结果:测试

测试包含匹配。

然后我执行这个bash:

MYSQL_RESULT=`mysql -h $DBIP -u testuser -ptestuser $DBSCHEMA -e "USE $DBSCHEMA; $SQL"`

$DBSCHEMA = testing和$ SQL是一个简单的“select * from Match;”

**问题:**

  

警告:在命令行界面上使用密码可能不安全。

     

第1行的错误1064(42000):您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“匹配”附近使用正确的语法

即使它绝对是测试的一部分,也找不到匹配。 select * from testing.Match工作(预先使用和不使用USE)

我的语法错了吗?

Server version: 5.5.43-0+deb7u1 (Debian)

2 个答案:

答案 0 :(得分:1)

您不需要USE $DBSCHEMA;,因为您的bash脚本中已包含$ DBSCHEMA mysql -h $DBIP -u testuser -ptestuser $DBSCHEMA -e

实际问题是因为匹配是一个保留字。将您的查询更改为

SELECT * FROM match

答案 1 :(得分:0)

我认为问题是匹配也是mysql中的关键字,它用于执行全文文本(匹配...反对...)。当您使用testing.match表单时,mysql可以明确地确定您在测试数据库中引用匹配表。没有测试。部分,mysql认为你想要进行全文搜索。

解决方案:

  1. 更改表的名称,因此它不是mysql中的保留字。
  2. 使用dbname.tablename格式。
  3. 在反引号(`)
  4. 中封装单词匹配