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