簡體   English   中英

使用MySQL的遠程SSH命令不起作用,但該語句本身起作用

[英]Remote SSH command with MySQL won't work, but the statement itself does

我想實現一些MySQL命令在遠程服務器上運行,以從數據庫中刪除所有表。 因此,我使用bash腳本連接SSH(SSH使用公共密鑰登錄)並運行mysql命令:

#!/bin/bash
ssh user@example.com "mysql -uadmin -p\$(cat /etc/psa/.psa.shadow) exdb<<EOFMYSQL
SET FOREIGN_KEY_CHECKS = 0;
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables
  FROM information_schema.tables 
  WHERE table_schema = 'exdb';

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET FOREIGN_KEY_CHECKS = 1;
EOFMYSQL"

當我通過SSH連接到遠程服務器,登錄到mysql並發出命令時,MySQL部分本身就成功了。 但是,在此腳本中,我得到:

第8行的錯誤1064(42000):您的SQL語法有錯誤; 檢查與您的MySQL服務器版本相對應的手冊,以在第1行的'NULL'附近使用正確的語法

我認為此錯誤與-p\\$(cat /etc/psa/.psa.shadow)的引用有關,但是我不知道如何解決此問題。

如果有人可以指出問題所在,我會感到很高興。

數據庫中沒有表,因此select不會得到結果, GROUP_CONCAT返回NULL,而DROP TABLENULL是... NULL

使用NULL作為語句來准備一條語句將產生錯誤。

一個SQLfiddle來顯示問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM