我有一个Django应用程序在其他两台服务器上运行正常。它使用MySQL作为数据库。
我在新服务器上设置了新应用程序实例,以便我可以通过mysql命令行客户端成功连接到远程数据库。
但是,当我尝试运行./manage.py syncdb
时,它会告诉我:
django.db.utils.OperationalError: (1045, "Access denied for user 'app_user'@'mynewserver.com' (using password: YES)")
我在网上看过的每个地方都告诉我要确保用户在mysql中设置并拥有新数据库的权限,甚至可以运行flush privileges;
。我仔细检查了所有这些,并多次完成。这似乎不是问题。
有什么想法吗?
修改
另外,我刚检查并运行python命令行中的以下内容也可以正常工作:
conn = mysql.connect(host='mynewserver.com', user='app_user', passwd='secret', db='myapp').cursor(mysql.cursors.DictCursor)
编辑2
我刚跑了./manage.py sql myapp > myapp.sql; ./manage.py dbshell < myapp.sql
一切正常,它创造了很好的表格。我假设它将使用与运行./manage.py syncdb
相同的权限和设置。 是什么给了什么?!?
版本
编辑3
我想我还应该补充说我正在使用South == 0.7.6。如果这有帮助。
答案 0 :(得分:1)
我确实遗漏了一些我认为不相关的东西,但是完全相关。
此应用程序定义了多个数据库。 Syncdb一次只在一个数据库上运行,默认情况下将使用默认数据库运行,如下所示: https://docs.djangoproject.com/en/1.6/topics/db/multi-db/#synchronizing-your-databases
但是,当我的用户没有其他数据库的权限时,syncdb会失败。它没有说明它试图访问哪个数据库。
在确保用户拥有所有数据库的权限之前,从django-extensions运行./manage.py reset_db
也运行良好。
我认为syncdb
中存在错误。在进一步研究之后,我可能不得不向Django报告错误。