【问题标题】:Killed loaddata杀死负载数据
【发布时间】:2014-06-04 00:58:25
【问题描述】:

我使用 PostgreSQL 9.1 和 Django 1.6.2。

CREATE DATABASE db WITH ENCODING = 'UTF8' TEMPLATE template0;
CREATE USER db_user WITH password 'password';
GRANT ALL privileges ON DATABASE db TO db_user;

那我要加载fixture:

python manage.py loaddata cars
Killed

这是什么意思? 被杀?一切都与mysql完美结合。 Cars.yaml - 这是一个非常大的文件(它有俄语单词,我需要使用 LC_COLLATE = 'ru_RU.UTF-8' 创建数据库吗?)。

我在mysql中使用:

CREATE DATABASE `db` CHARACTER SET utf8 COLLATE utf8_general_ci;

一切正常。请帮忙,我是 PostgreSQL 的新手。

如何解决killed 的问题?

【问题讨论】:

    标签: python mysql django postgresql


    【解决方案1】:

    在终端中使用pg_restore()

    对于大文件,django loaddata 被操作系统杀死。一种解决方法是将您的数据库数据转储到存档并将其直接加载到 postgresql 数据库。因此,如果您的转储名为 dump.gz,那么您可以在终端中使用以下命令将其加载到数据库中:

    gunzip dump.gz
    pg_restore -d your_db -U user_name --no-owner dump
    

    【讨论】:

      【解决方案2】:

      Killed 是 Unix shell 显示的消息,而不是 python 程序本身。

      这表明程序以错误代码结束,表明它已被SIGKILL 信号(称为kill -9)杀死。

      这可能是 Linux OOM killer 的行为,如果 python 程序(或其他并发程序)分配大量内存(请参阅 Return code when OOM killer kills a process)。

      查看您的内核日志以获取相关证据(/var/log/kernel.log 或类似信息)。 如果这确实是过度使用内存的问题,那么向您的系统添加交换空间可能会解决它。

      或者如果可能的话,改进脚本以使用更少的内存。

      与数据库的创建方式及其语言环境没有明显的联系。

      【讨论】:

      • 谢谢丹尼尔,有问题的小实例类型
      猜你喜欢
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多