Bug及解决

文章描述了在使用Django进行数据库迁移时遇到的ImproperlyConfigured错误,原因是缺少ENGINE设置。尽管settings.py中已经配置了DATABASES,但问题出在项目的多环境配置上。项目有两个settings.py文件,manage.py之前默认使用的是floatlightapi.settings,现更改为floatlightapi.settings.dev。此外,即使settings.py未在代码中显式指定,Django可能已在IDE的服务器配置中指定了具体配置(如DJANGO_SETTINGS_MODULE=floatlightapi.settings.dev),使得项目能正常运行并提示迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

settings.DATABASES is improperly configured. Please supply the ENGINE value.

  1. Occasion 场景: 使用命令迁移数据库时

  2. 尝试解决方案

    1. 根据控制台信息找到检查文件,查看Django 内部定义,可知报错是因为 ENGING 未配置,但 settings文件已经实际配置

      """
      Dummy database backend for Django.
      
      Django uses this if the database ENGINE setting is empty (None or empty string).
      
      Each of these API functions, except connection.close(), raise
      ImproperlyConfigured.
      """
      
      from django.core.exceptions import ImproperlyConfigured
      from django.db.backends.base.base import BaseDatabaseWrapper
      from django.db.backends.base.client import BaseDatabaseClient
      from django.db.backends.base.creation import BaseDatabaseCreation
      from django.db.backends.base.introspection import BaseDatabaseIntrospection
      from django.db.backends.base.operations import BaseDatabaseOperations
      from django.db.backends.dummy.features import DummyDatabaseFeatures
      
      
      def complain(*args, **kwargs):
          raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
                                     "Please supply the ENGINE value. Check "
                                     "settings documentation for more details.")
      
    2. 此时发散思维,考虑到本项目有两个 sttings.py 配置文件,那么 manage.py 如何区分两个文件呢?

    3. 由此找到 manage.py 中指定 sttings.py 的不分,新旧配置如下:

      def main():
          # old---> os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'floatlightapi.settings')
          os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'floatlightapi.settings.dev')
          try:
              from django.core.management import execute_from_command_line
          except ImportError as exc:
          execute_from_command_line(sys.argv)
      
    4. 第二个疑问?为什么在 sttings.py 未指定的情况下,Django 项目却可以正常运行并且提示迁移文件呢?

      1. 答:已经在IDE配置server时指定了具体的配置文件,具体内容为:

        DJANGO_SETTINGS_MODULE = floatlightapi.settings.dev
        
  3. 成功迁移截图

迁移成功截图

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值