Django数据库备份时出错 - AttributeError:' NoneType'对象没有属性'扩展名'

时间:2016-01-18 14:00:27

标签: python django database-backups

我正在尝试使用django-dbbackup v2.3.3来备份django项目的数据库(django-1.8.4python - 3.4.3

我正在关注此django-dbbackup文档。

以下是 DATABASES DATABASE_BACKUP

的项目设置
INSTALLED_APPS = (
    'django.contrib.auth',
    'django_admin_bootstrapped',
    'django.contrib.admin',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.gis',

    'authtools',
    'crispy_forms',
    'easy_thumbnails',
    'rest_framework',
    'dbbackup',

    'profiles',
    'location',
    'maps'

)

DATABASES['default']['ENGINE'] = 'django.contrib.gis.db.backends.spatialite'

# DATABASE BACKUP SETTINGS
DBBACKUP_STORAGE = 'dbbackup.storage.filesystem_storage'
DBBACKUP_STORAGE_OPTIONS ={'location':'/home/altius/locateme/src/backup/'}

我收到以下错误 -

Backing Up Database: db.sqlite3
Traceback (most recent call last):
   File "manage.py", line 13, in <module>
     execute_from_command_line(sys.argv)
   File"/usr/local/lib/python3.4/distpackages/django/core/management/__init__.py", line 338, in execute_from_command_line
     utility.execute()
   File "/usr/local/lib/python3.4/dist-packages/django/core/management/__init__.py", line 330, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 393, in run_from_argv
self.execute(*args, **cmd_options)
   File "/usr/local/lib/python3.4/dist-packages/django/core/management/base.py", line 444, in execute
output = self.handle(*args, **options)
   File "/usr/local/lib/python3.4/dist-packages/dbbackup/utils.py", line 100, in wrapper
func(*args, **kwargs)
   File "/usr/local/lib/python3.4/dist-packages/dbbackup/management/commands/dbbackup.py", line 54, in handle
self.save_new_backup(database)
   File "/usr/local/lib/python3.4/dist-packages/dbbackup/management/commands/dbbackup.py", line 66, in save_new_backup
filename = self.dbcommands.filename(self.servername)
   File "/usr/local/lib/python3.4/dist-packages/dbbackup/dbcommands.py", line 278, in filename
extension = self.settings.extension
AttributeError: 'NoneType' object has no attribute 'extension'

我试图调查其他错误,但却找不到解决办法   AttributeError:&#39; NoneType&#39;对象没有属性&#39;扩展&#39;

有几个 AttributeError ,如appendstripformat等,但无法找到扩展错误。

我错过了更多设置吗?还有什么办法可以摆脱这个错误来为django-project本地备份数据库?

1 个答案:

答案 0 :(得分:0)

从源代码来看,我认为select sum(case when ItemID = 1 then 1 else 0 end) as count_item1, sum(case when ItemID = 2 then 1 else 0 end) as count_item2, sum(case when ItemID = 3 then 1 else 0 end) as count_item3 ... 并不支持SpatiaLite。

检查方法的来源_get_settings()(设置django-dbbackup的值),表明代码只为MySQL,PostGIS,PostGreSQL和SQLite提取数据库设置。

因为,它与列出的所有数据库都不匹配,self.settings设置为self.settings,因此当您尝试获取None时收到错误AttributeError: 'NoneType' object has no attribute 'extension'。你可以试试Python shell。

self.settings.extension

虽然没有具体提及文档中>>> settings = None >>> settings.extension Traceback (most recent call last): File "<pyshell#34>", line 1, in <module> settings.extension AttributeError: 'NoneType' object has no attribute 'extension' 支持的数据库列表。如果你能与作者确认这一次会更好。

编辑: OP已在django-backup的GitHub存储库上创建了issue。请检查链接以检查有关SpatiaLite支持的更新。