2010-01-18 69 views
2

当我运行:在Django项目运行执行syncdb不工作:无法创建/写入文件

$ python manage.py syncdb 

我得到以下输出:

Creating table auth_permission 
Traceback (most recent call last): 
    File "manage.py", line 11, in <module> 
    execute_manager(settings) 
    File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 362, in execute_manager 
    utility.execute() 
    File "/Library/Python/2.6/site-packages/django/core/management/__init__.py", line 303, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 195, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 222, in execute 
    output = self.handle(*args, **options) 
    File "/Library/Python/2.6/site-packages/django/core/management/base.py", line 351, in handle 
    return self.handle_noargs(**options) 
    File "/Library/Python/2.6/site-packages/django/core/management/commands/syncdb.py", line 78, in handle_noargs 
cursor.execute(statement) 
    File "/Library/Python/2.6/site-packages/django/db/backends/util.py", line 19, in execute 
    return self.cursor.execute(sql, params) 
    File "/Library/Python/2.6/site-packages/django/db/backends/mysql/base.py", line 84, in execute 
    return self.cursor.execute(query, args) 
    File "build/bdist.macosx-10.6-universal/egg/MySQLdb/cursors.py", line 173, in execute 
    File "build/bdist.macosx-10.6-universal/egg/MySQLdb/connections.py", line 36, in defaulterrorhandler 
_mysql_exceptions.InternalError: (1, "Can't create/write to file '/usr/local/mysql/data/wzhere/auth_permission.MYI' (Errcode: 2)") 

如何调试任何想法?我已经给了数据库用户所有它应该需要的权限。不确定MySQL在这里玩什么。

更新:这里的问题结束了,我已经安装了MySQL多次(第32位,然后64位,当我意识到我应该这样做),虽然我跟一些说明如何取消 - 安装MySQL,Snow Leopard的说明略有不同。一旦我真的做了卸载和干净安装,这个问题就消失了。

+1

是否工作正常使用SQLite? – luc 2010-01-18 08:53:51

回答

4

问题是如何调试问题,正如Agos已经指出的,Errno 2是'没有这样的文件或目录'。你可能想看看在MySQL的数据目录和检查目录实际上是有,有正确的权限

shell> cd /usr/local/mysql/data/ 
shell> ls -ld * 
drwx------ 17 geert admin   578 Oct 1 19:33 someabstract 

上面应该给你的目录(这是MySQL数据库)的名单和他们的权限。检查是否在'wzhere'目录.. 这是一个有点奇怪的错误信息,你应该说。

(尝试其他的Django DB后端不会解决在这种情况下任何东西。)

2

这可能帮助:

AGOS @服务器:〜$ PERROR 2
操作系统错误代码2:没有这样的文件或目录

是你的MySQL配置是否正确?尝试通过mysql命令自行查询。
此外,正如在评论中提出的luc,尝试与sqlite。