在ElasticBeanstalk上具有SyntaxError的Django manage.py命令

时间:2019-01-23 15:15:08

标签: python django postgresql amazon-web-services amazon-elastic-beanstalk

我第一次使用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获取此信息的方法,但是我只找到了一种还原备份的方法,但是无法手动修改内容,因此不是我真正需要的。

1 个答案:

答案 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之类的环境变量。为此,您需要:

  1. 激活您的virtualenv
  2. 获取环境变量

如您在本教程末尾所描述的,这是这样做的方法:

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。