【发布时间】:2011-08-03 13:34:08
【问题描述】:
我似乎遇到了问题。我有一个视图,我可以允许员工用户下载该程序的 MySQL 数据库,但它根本不起作用。我收到一条错误消息,上面写着Errno 2] No such file or directory: '/usr/local/src/djcode/c2duo_mms/backup.gz'。
我不知道为什么会出现错误,但可能的答案是因为我无法正确转储数据库。它找不到backup.gz,因为它找不到文件,因为它应该转储文件的步骤不起作用。
views.py
@login_required
def dbbackup(request):
if not (request.user.is_authenticated() and request.user.is_staff):
raise http.Http404
os.popen3("mysqldump -u *username* -p*password* *database* > /usr/local/src/djcode/c2duo_mms/backup.sql")
os.popen3("gzip -c /usr/local/src/djcode/c2duo_mms/backup.sql > /usr/local/src/djcode/c2duo_mms/backup.gz"
dataf = open('/usr/local/src/djcode/c2duo_mms/backup.gz', 'r')
return HttpResponse(dataf.read(), mimetype='application/x-gzip')
编辑:我试过运行一个小的 python 脚本。现在下面的 python 文件可以工作了(在 c2duo_mms 目录中保存了一个名为 backup.gz 的文件)。那么为什么我不能从我的views.py 文件中做同样的事情!?
#!/usr/bin/env python
import os
os.popen3("mysqldump -u *username* -p*password* *database* > /usr/local/src/djcode/c2duo_mms/backup.sql")
os.popen3("gzip -c /usr/local/src/djcode/c2duo_mms/backup.sql > /usr/local/src/djcode/c2duo_mms/backup.gz")
【问题讨论】:
-
我只有一个猜测,为什么它是一个评论,请确保用户 django 运行时具有写入该目录所需的权限。检查 mysqldump 和 gzip 的输出是否有错误。
-
您是否尝试过手动运行该命令以确保其正常工作?
-
@Mike Ramirez:权限绝对没问题。 mysqldump 和 gzip 的输出看起来也不错。虽然因为它没有转储数据库,但可能是这一行导致了问题。
os.popen3("mysqldump --add-drop-table -u " + settings.DATABASE_USER + " -p" + settings.DATABASE_PASSWORD + " " + settings.DATABASE_NAME + " > backup.sql") os.popen3("gzip -c backup.sql > backup.gz") -
@Shehzad009 然后查看发布的第一个答案。它应该解决它。是的,我知道 os.chdir() 应该与相对路径类似地执行此操作,但绝对路径通常是最佳的,并且您确实知道它的去向/应该在哪里。
标签: python mysql database django mysqldump