使用MySQL的远程SSH命令赢得';不起作用,但语句本身起作用

使用MySQL的远程SSH命令赢得';不起作用,但语句本身起作用,mysql,ssh,Mysql,Ssh,我想实现在远程服务器上运行一些MySQL命令,以从数据库中删除所有表。因此,我使用SSH(SSH使用公钥登录)连接并运行mysql命令,所有这些都在bash脚本中: #!/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

我想实现在远程服务器上运行一些MySQL命令,以从数据库中删除所有表。因此,我使用SSH(SSH使用公钥登录)连接并运行mysql命令,所有这些都在bash脚本中:

#!/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"
#/bin/bash

sshuser@example.com“mysql-uadmin-p\$(cat/etc/psa/.psa.shadow)exdb您在数据库中没有表,因此您不会从select中得到任何结果,
组的CONCAT返回NULL,而
DROP TABLE
NULL
的CONCAT是…
NULL

使用
NULL
作为语句准备语句将给出错误信息


.

我太盲目了。在测试SQL是否真的有效时,我清除了所有的表等,后续的测试都像您描述的那样出错了。谢谢!