我第一次使用AWS,在上载Django项目后,我想知道如何将数据库信息备份到文件中,以便能够修改数据,以防万一我必须修改自己的模型项目(仍在开发中),并保持一些人口数据。
我考虑过django dumpdata
命令,因此为了能够通过CLI在EB上执行它,我做了以下工作(这里可能是我做错了什么):
- eb ssh
- sudo -s
- cd /opt/python/current/app/
- python manage.py dumpdata --natural-foreign --natural-primary -e contenttypes -e auth.Permission --indent 4 > project_dump.json
据我了解,第一个命令只是访问Elastic Beanstalk上的SSH。
第二个是在Linux服务器内部具有root权限,以避免创建和打开文件等问题。
第三个只是访问当前工作应用程序的位置。
最后一个命令是我必须使用的命令,以“人类友好”的方式转储所有数据,而不受任何限制,以便能够在其他任何新数据库中使用它。
我不得不说我在本地计算机上尝试了最后一个命令, 正常工作,没有任何错误或警告。
因此,我在这里面临的问题是,当我执行最后一条命令时,出现以下错误:
File "manage.py", line 14
) from exc
^
SyntaxError: invalid syntax
我还尝试跳过sudo -s
,仅使用我用来登录ssh的用户的权限,但得到了-bash: project_dump.json: Permission denied
。所以这就是为什么我认为使用sudo
命令在这里会有所帮助的原因。
此外,我按照this known tutorial进行了部署 EB上的Django + PostgreSQL,因此我用来访问
ssh
的用户是 具有AdministratorAccess
权限的组中的一个。
在尝试所有这些之前,我还寻找了一种直接从AWS-RDS
获取此信息的方法,但是我只找到了一种还原备份的方法,但是无法手动修改内容,因此不是我真正需要的。
答案 0 :(得分:1)
与在本地环境中一样,您需要在正确的python virtualenv内运行7777
Rohit Pandey
6
命令,并确保设置了 File "/home/omar/odoo/odoo11/odoo/modules/loading.py", line 146, in load_module_graph
model_names = registry.load(cr, package)
File "/home/omar/odoo/odoo11/odoo/modules/registry.py", line 250, in load
model = cls._build_model(self, cr)
File "/home/omar/odoo/odoo11/odoo/models.py", line 428, in _build_model
raise TypeError("Model %r does not exist in registry." % name)
TypeError: Model 'purchase.order' does not exist in registry.
和manage.py
之类的环境变量。为此,您需要:
如您在本教程末尾所描述的,这是这样做的方法:
RDS_USERNAME
每当您进入计算机时,您都必须这样做。
注意:出现权限被拒绝错误的原因是,当将RDS_PASSWORD
的输出通过管道传输到 project_dump.json 时,您试图写入应用程序目录本身。这不是一个好主意。尝试通过管道传递到source /opt/python/run/venv/bin/activate
source /opt/python/current/env
python manage.py <your_command>
(您的主目录),然后不需要sudo。