Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django manage.py syncdb未完成 编辑:_Django_Postgresql_Django Syncdb - Fatal编程技术网

Django manage.py syncdb未完成 编辑:

Django manage.py syncdb未完成 编辑:,django,postgresql,django-syncdb,Django,Postgresql,Django Syncdb,更改了问题标题-之前是关于Postgres中不完整的启动包,但发现它不是db问题 我有django应用程序和它的安装脚本。 除此之外,该脚本确保安装postgresql并执行manage.py syncdb 最近,我注意到syncdb存在一些问题-它挂起在创建表xxxxxx。。。。 我中止了整个任务并继续进行,即使South工作了,数据库似乎也正常工作,但并没有要求我创建根帐户。因此,它似乎创建了表,然后挂起了一些东西,或者没有启动一些东西。我决定一劳永逸地解决这个问题,在postgresql日

更改了问题标题-之前是关于Postgres中不完整的启动包,但发现它不是db问题

我有django应用程序和它的安装脚本。 除此之外,该脚本确保安装postgresql并执行manage.py syncdb

最近,我注意到syncdb存在一些问题-它挂起在创建表xxxxxx。。。。 我中止了整个任务并继续进行,即使South工作了,数据库似乎也正常工作,但并没有要求我创建根帐户。因此,它似乎创建了表,然后挂起了一些东西,或者没有启动一些东西。我决定一劳永逸地解决这个问题,在postgresql日志中,我找到了上述通信地址:

LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
LOG:  incomplete startup packet
我重新安装了运行ubuntu 13.10的postgresql im,但它没有解决问题。 然后我想它可能和创建表的应用程序有关,但拿出这个应用程序证明它是无关的。 那么,如果不是postgresql安装,也不是django应用程序,那可能是什么呢

也许我把postgresql的安装搞砸了?我做到了:

apt-get install postgresql postgresql-contrib
然后使用以下内容创建群集:

pg_createcluster 9.1 main
就这样

自从我上次安装postgresql已经有一段时间了,所以我可能错过了一些明显的东西,尽管我不知道是什么。 我读了一些关于这个问题的文章,它可能与不相关的握手或类似的东西有关,但db和app ar在同一台机器上

如前所述,我在Ubuntu13.10上使用django版本1.5和postgresql 9.1

任何指示都将不胜感激。 短暂性脑缺血发作

从pg_stat_活动中选择*的输出


嗯,这有点尴尬,虽然我想我会发布一个解决方案,也许有人会有类似的问题

事实上,syncdb和所有的一切都很好。 问题是我在安装脚本bash中使用了它,从中我显示了我自己关于安装过程的输出。为了保持一致性,我将所用命令的大部分输出重定向到/dev/null

对于syncdb,我决定只重定向stderr:python manage.py syncdb 2>/dev/null 碰巧它阻止了“创建超级用户”提示的显示,所以在这里第一个提示的情况下,进程正在等待用户输入是或否

不过,这里有一些有趣的发现,当我发现原因时,我开始尝试其他可能性,并得到了有趣的结果:

重定向标准输出:python manage.py syncdb>/dev/null 除了折旧警告外,没有显示任何内容,因为它应该通过stderr,所以折旧警告非常正常 未显示超级用户提示 在盲输入前3个提示的答案后,有5个提示:是否要创建su、登录、电子邮件、密码、重复密码提示正常显示 如上所述重定向stderr:python manage.py syncdb 2>/dev/null 正常显示 超级用户提示未显示! 盲输入前3个提示的答案后,密码提示正常显示! 这是非常有趣的,因为它表明密码提示在一秒钟内不受重定向的影响,如果有任何重定向,其余的提示都不会显示!不管是stdout还是stderr

对于额外的测试,我重定向了all:python manage.py syncdb&>/dev/null,根本没有显示,但在摸索前三个提示之后,密码提示仍然出现

我的问题已经解决了,尽管我发现bash重定向如何处理这个输出很奇怪。 AFAIK create_superuser使用了一种叫做的东西,它会弄乱流,所以我想这已经足够清楚了。 不过,我很难理解前三个提示消失背后的机制。
如果有人对此有所了解,我很乐意阅读。

不完整的启动包不是一个严重的问题。当一个连接在建立之前被断开时,它可能会发生,仅此而已。很高兴听到这个消息。但是为什么我的syncdb不能自己完成呢?那可能是什么?我猜有什么东西在等待一个专用锁。显示SELECT*FROM pg_stat_activity WHERE waiting='t'的输出编辑您的问题以添加它,然后在donewell时在此处进行评论。我想这并不多。当然,我在syncdb挂起时检查了它,所以无论它挂在哪里,都不是在数据库级别;在堆栈中向上看。
 datid | datname  | procpid | usesysid | usename  | application_name | client_addr | client_hostname | client_port |         backend_start         |          xact_start           |          query_start          | waiting |          current_query          
-------+----------+---------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------------------+-------------------------------+---------+---------------------------------
 23255 | imris    |   18330 |    23254 | imris    |                  |             |                 |          -1 | 2014-08-20 15:43:19.38489+02  |                               | 2014-08-20 15:43:20.379704+02 | f       | <IDLE>
 11953 | postgres |   18342 |       10 | postgres | psql             |             |                 |          -1 | 2014-08-20 15:43:25.240481+02 | 2014-08-20 15:43:30.365372+02 | 2014-08-20 15:43:30.365372+02 | f       | SELECT * FROM pg_stat_activity;
(2 rows)