2015-10-16 53 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