私は問題があるようです。私はスタッフのユーザーにそのプログラムのMySQLデータベースをダウンロードさせることができるという見解を持っていますが、それは全く機能しません。 Errno 2] No such file or directory: '/usr/local/src/djcode/c2duo_mms/backup.gz'
というエラーが表示されます。mysqlデータベースをダンプできないようです。
私はなぜエラーが出るのかはわかりませんが、データベースを適切にダンプできないため、答えが出る可能性があります。それはファイルを見つけることができないので、それがファイルをダンプするはずのステップが動作しないので、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