使用MySQL的远程SSH命令赢得';不起作用,但语句本身起作用
我想实现在远程服务器上运行一些MySQL命令,以从数据库中删除所有表。因此,我使用SSH(SSH使用公钥登录)连接并运行mysql命令,所有这些都在bash脚本中:使用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
#!/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是否真的有效时,我清除了所有的表等,后续的测试都像您描述的那样出错了。谢谢!