Django sqlite3 - manage.py syncdb时出错

时间:2014-01-05 23:03:06

标签: django sqlite

我无法解决在django 1.6应用程序下创建新的sqlite3数据库的问题。当我在做python manage.py syncdb时,它允许我创建一些表格,如:

Creating table django_admin_log                                                 
Creating table auth_permission                                                  
Creating table auth_group_permissions                                           
Creating table auth_group                                                       
Creating table auth_user_groups                                                 
Creating table auth_user_user_permissions                                       
Creating table auth_user                                                        
Creating table django_content_type                                              
Creating table django_session

...但经过一些追溯后,它以错误结束:

    Traceback (most recent call last):                                              
  File "manage.py", line 10, in <module>                                        
    execute_from_command_line(sys.argv)                                         
  File "/usr/local/alwaysdata/python/django/1.6.1/django/core/management/__init_
_.py", line 399, in execute_from_command_line                                   
    utility.execute()                                                           
  File "/usr/local/alwaysdata/python/django/1.6.1/django/core/management/__init_
_.py", line 392, in execute                                                     
    self.fetch_command(subcommand).run_from_argv(self.argv)                     
  File "/usr/local/alwaysdata/python/django/1.6.1/django/core/management/base.py
", line 242, in run_from_argv                                                   
    self.execute(*args, **options.__dict__)                                     
  File "/usr/local/alwaysdata/python/django/1.6.1/django/core/management/base.py
", line 285, in execute                                                         
    output = self.handle(*args, **options)                                      
  File "/usr/local/alwaysdata/python/django/1.6.1/django/core/management/base.py
", line 415, in handle                                                          
    return self.handle_noargs(**options)                                        
  File "/usr/local/alwaysdata/python/django/1.6.1/django/core/management/command
s/syncdb.py", line 112, in handle_noargs                                        
    emit_post_sync_signal(created_models, verbosity, interactive, db)           
  File "/usr/local/alwaysdata/python/django/1.6.1/django/core/management/sql.py"
, line 216, in emit_post_sync_signal                                            
    interactive=interactive, db=db)                                             
  File "/usr/local/alwaysdata/python/django/1.6.1/django/dispatch/dispatcher.py"
, line 185, in send                                                             
    response = receiver(signal=self, sender=sender, **named)                    
  File "/usr/local/alwaysdata/python/django/1.6.1/django/contrib/auth/management
/__init__.py", line 82, in create_permissions                                   
    ctype = ContentType.objects.db_manager(db).get_for_model(klass)             
  File "/usr/local/alwaysdata/python/django/1.6.1/django/contrib/contenttypes/mo
dels.py", line 47, in get_for_model                                             
    defaults = {'name': smart_text(opts.verbose_name_raw)},                     
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/models/manager.py", 
line 154, in get_or_create                                                      
    return self.get_queryset().get_or_create(**kwargs)                          
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/models/query.py", li
ne 388, in get_or_create                                                        
    six.reraise(*exc_info)                                                      
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/models/query.py", li
ne 379, in get_or_create                                                        
    with transaction.atomic(using=self.db):                                     
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/transaction.py", lin
e 277, in __enter__
    connection._start_transaction_under_autocommit()
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/backends/sqlite3/bas
e.py", line 436, in _start_transaction_under_autocommit
    self.cursor().execute("BEGIN")
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/backends/util.py", l
ine 69, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/backends/util.py", l
ine 53, in execute
    return self.cursor.execute(sql, params)
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/utils.py", line 99,
in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/backends/util.py", l
ine 51, in execute
    return self.cursor.execute(sql)
  File "/usr/local/alwaysdata/python/django/1.6.1/django/db/backends/sqlite3/bas
e.py", line 448, in execute
    return Database.Cursor.execute(self, query)
django.db.utils.OperationalError: cannot start a transaction within a transaction

我的设置包括:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.db',
    }                                                  
}

我不知道如何解决这个问题。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:3)

我假设你正在使用Alwaysdata的托管服务,因为我用Google搜索了这个问题,这是关于Alwaysdata论坛的同一个问题:Django sqlite3 - an error when manage.py syncdb

我解决此问题的方法是在我的Alwaysdata管理页面中切换到较低版本的Django(例如1.5.5)。然后可以成功创建db文件。

我仍然没有理由发生这种情况。