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)
答案 0 :(得分:1)
您不需要USE $DBSCHEMA;
,因为您的bash脚本中已包含$ DBSCHEMA mysql -h $DBIP -u testuser -ptestuser $DBSCHEMA -e
实际问题是因为匹配是一个保留字。将您的查询更改为
SELECT * FROM match
答案 1 :(得分:0)
我认为问题是匹配也是mysql中的关键字,它用于执行全文文本(匹配...反对...)。当您使用testing.match表单时,mysql可以明确地确定您在测试数据库中引用匹配表。没有测试。部分,mysql认为你想要进行全文搜索。
解决方案: