我正在尝试使用sqlite3从Go备份一个db。备份
命令,按照本SO答案给出的方式执行https://stackoverflow.com/a/25684912/426853.
以下操作始终在命令行中起作用:
sqlite3 /home/pi/pgclogs/smartlog.db备份/home/pi/pgcdata/smartlog.db.bak
我将其编码为Go,如下所示:
func DbBackup() (err error) {
dbpath := "/home/pi/pgclogs/smartlog.db"
bakpath := "/home/pi/pgcdata/smartlog.db.bak"
cmd := exec.Command("sqlite3", dbpath, fmt.Sprintf("\".backup '%s'\"", bakpath))
out, err := cmd.CombinedOutput()
if err != nil {
return fmt.Errorf("dbBackup failed : %s : %v", string(out), err)
}
return
}
我有一个测试文件,像这样调用它:
func TestDbBackup(t *testing.T) {
var err error
err = DbBackup()
if err != nil {
t.Errorf("backup failed : %v", err)
}
}
测试报告了来自sqlite3的语法错误。
--- FAIL: TestDbBackup (0.01s)
db_backup_test.go:22: backup failed : dbBackup failed : Error: near "".backup '/home/pi/pgcdata/smartlog.db.bak'"": syntax error
: exit status 1
我怀疑问题出在cmd的方式上。组合输出
将参数传递给shell,问题在于fmt中的引用。Sprintf
调用。我试着把它改成
fmt.Sprintf(`".backup '%s'"`, bakpath)
但结果是一样的。我还尝试将echo
放在命令前面,即exec。命令(“echo”、“sqlite3”、dbpath、…
并打印输出。输出看起来绝对正确
sqlite3 /home/pi/pgclogs/smartlog.db ".backup '/home/pi/pgcdata/smartlog.db.bak'"
粘贴到命令行时,它会正确运行。我肯定我忽略了一些简单的事情,但我已经花了一个多小时,仍然没有看到它。
你根本不需要额外的报价,所以这应该可以做到:
exec.Command("sqlite3", dbpath, fmt.Sprintf(".backup '%s'", bakpath))
这些引号由shell解析,这样就可以将. back的'某些文件'
作为一个参数传递给sqlite3
。使用exec时。命令
,不涉及shell,这也是您将命令拆分为多个参数的原因。
问题内容: 我知道这是内置的shell,我可以使用运行它。 但这有可能由家人来执行命令吗? 编辑:我只是注意到这也是没有意义的。感谢大家的帮助。 问题答案: 加载 可执行文件 并用它替换当前程序映像。正如您正确指出的那样,它 不是 可执行文件,而是内置的shell。因此,您要运行的可执行文件是外壳本身。当然,这对您有帮助,但是如果您想对其进行明确说明,则可以使用: 由于这 将替换 您当前的过程映像
问题内容: 您好,我正在尝试从mysql命令行客户端进行备份。我正在使用mysqldump使用用户名和密码进行备份。以下是我用于备份数据库的命令。 我收到以下错误 尽管该命令似乎是正确的,但仍然出现错误。请让我知道是否还有其他方法可以从mysql命令行进行备份。 提前致谢。 问题答案: 不是MySQL命令,而是命令行实用程序。您必须从Shell命令行调用它。
我需要避免错误,并使用mysqldump将数据库备份存储在单独的文件路径中
我需要用docker exec运行2个命令。我正在从docker容器中复制一个文件,不想处理凭据来使用像ssh这样的东西。此命令复制一个文件: 但它会创建一个子目录var/log,我想避免这种情况,所以如果我可以在docker容器中执行这些操作,我应该很好: 如何让docker exec运行2个命令?
我正在处理我的一个项目。我正在windows机器上使用XAMPP开发该项目。这就是我面临的问题。我需要在服务器上执行shell脚本,并在网页上显示结果。问题是,大多数脚本都按预期运行,但我无法获得以下命令的输出:, ls, cat, pwd 因为这些命令返回给我一个空白数组。 我找不到确切的问题。
我尝试在php中运行curl命令使用exec方法,它在我的Linux服务器中运行良好,但在我的Windows机器中不工作,我也检查了我的PHP配置文件,在那里启用了curl。它不起作用的问题是什么? 我的命令是(一个用于Linux的命令,这个命令在那里成功运行)“curl-u admin:geoserver-XPUT-H”Content type:image/tiff”--data binary@