gpt4 book ai didi

mysql - 使用 MySQL 的远程 SSH 命令不起作用,但语句本身可以

转载 作者:行者123 更新时间:2023-11-29 13:51:55 25 4
gpt4 key购买 nike

我想实现一些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"

当我通过 SSH 连接到远程服务器、登录 mysql 并发出命令时,MySQL 部分本身成功。但是,在这个脚本中,我得到:

ERROR 1064 (42000) at line 8: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NULL' at line 1

我认为这个错误与引用 -p\$(cat/etc/psa/.psa.shadow) 有关,但是我不知道如何解决这个问题。

如果有人能指出问题出在哪里,我会很高兴。

最佳答案

数据库中没有表,因此您无法从选择中获得任何结果,并且 GROUP_CONCAT 返回 NULL,并且 DROP TABLE 的连接>NULL 是...NULL

使用 NULL 作为语句来准备语句将会给出错误。

An SQLfiddle to show the problem .

关于mysql - 使用 MySQL 的远程 SSH 命令不起作用,但语句本身可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16570965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com