2015-10-16 202 views
0

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

我使用的是MySQL的-e命令来连接使用;选择:

我有与

节目数据库运行一个MySQL服务器;

结果:测试

测试包含匹配。

然后我执行这个庆典:

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

$DBSCHEMA = testing和$ SQL是一个简单的 “从比赛中选择*;”

**问题:**

警告:命令行界面上使用密码可以是不安全的。

错误1064(42000)在第1行:您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以便在第1行'Match'附近使用正确的语法。

即使它绝对是测试的一部分,但它不会找到Match。选择* from testing.Match作品(有和没有USE预先)

我的语法错了吗?

Server version: 5.5.43-0+deb7u1 (Debian) 

回答

0

我认为这个问题是那场比赛也是MySQL的内一个关键字,它被用于执行全文serches(比赛......对......)。当你使用testing.match表单时,mysql可以清楚地确定你正在引用测试数据库中的匹配表。没有测试。部分,mysql认为你想执行全文搜索。

解决方案:

  1. 更改表的名称,所以它不是MySQL的内保留字。
  2. 使用dbname.tablename格式。
  3. 封装反引号(')内的字匹配
1

你不需要USE $DBSCHEMA;因为你的bash脚本已经有$的dbschema它mysql -h $DBIP -u testuser -ptestuser $DBSCHEMA -e

的实际问题,但因为比赛是一个保留字。将您的查询改为

选择*从match