tortoise / aerich

A database migrations tool for TortoiseORM, ready to production.
https://github.com/tortoise/aerich
Apache License 2.0
804 stars 90 forks source link

init-db have a problem: ConfigurationError. #261

Closed Mecil9 closed 1 year ago

Mecil9 commented 1 year ago

config file:

from src.config.settings import DATABASE_URI, APPS_MODELS

TORTOISE_ORM = {
    "connections": {"default": DATABASE_URI},
    "apps": {
        "models": {
            "models": APPS_MODELS,
            "default_connection": "default",
        }
    },
}

step 1. init -r config file success!

aerich init -t src.config.tortoise_conf.TORTOISE_ORM
Success create migrate location ./migrations
Success write config to pyproject.toml

pyproject.toml file:

[tool.aerich]
tortoise_orm = "src.config.tortoise_conf.TORTOISE_ORM"
location = "./migrations"
src_folder = "./."

step 2.init-db throw error....

  aerich init-db                                      
Traceback (most recent call last):
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/bin/aerich", line 8, in <module>
    sys.exit(main())
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 257, in main
    cli()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 31, in wrapper
    loop.run_until_complete(f(*args, **kwargs))
  File "/Users/mecilmeng/miniforge3/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 231, in init_db
    await command.init_db(safe)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/__init__.py", line 140, in init_db
    version = await Migrate.generate_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 102, in generate_version
    last_version_num = await cls._get_last_version_num()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 93, in _get_last_version_num
    last_version = await cls.get_last_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 55, in get_last_version
    return await Aerich.filter(app=cls.app).first()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 1220, in filter
    return cls._meta.manager.get_queryset().filter(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/manager.py", line 15, in get_queryset
    return QuerySet(self._model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 297, in __init__
    super().__init__(model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 94, in __init__
    self.capabilities: Capabilities = model._meta.db.capabilities
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 283, in db
    raise ConfigurationError(
tortoise.exceptions.ConfigurationError: default_connection for the model <class 'aerich.models.Aerich'> cannot be None
(venv) (base)  ✘ mecilmeng@MecildeMacBook-Pro  ~/Homework/Jcble_projects/jcble_web_2022_09/backend  aerich init-db
Inited models already, or delete migrations/models and try again.
(venv) (base)  mecilmeng@MecildeMacBook-Pro  ~/Homework/Jcble_projects/jcble_web_2022_09/backend  aerich init-db
Traceback (most recent call last):
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/bin/aerich", line 8, in <module>
    sys.exit(main())
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 257, in main
    cli()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 31, in wrapper
    loop.run_until_complete(f(*args, **kwargs))
  File "/Users/mecilmeng/miniforge3/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 231, in init_db
    await command.init_db(safe)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/__init__.py", line 140, in init_db
    version = await Migrate.generate_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 102, in generate_version
    last_version_num = await cls._get_last_version_num()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 93, in _get_last_version_num
    last_version = await cls.get_last_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 55, in get_last_version
    return await Aerich.filter(app=cls.app).first()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 1220, in filter
    return cls._meta.manager.get_queryset().filter(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/manager.py", line 15, in get_queryset
    return QuerySet(self._model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 297, in __init__
    super().__init__(model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 94, in __init__
    self.capabilities: Capabilities = model._meta.db.capabilities
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 283, in db
    raise ConfigurationError(
tortoise.exceptions.ConfigurationError: default_connection for the model <class 'aerich.models.Aerich'> cannot be None
(venv) (base)  ✘ mecilmeng@MecildeMacBook-Pro  ~/Homework/Jcble_projects/jcble_web_2022_09/backend  aerich init-db
Inited models already, or delete migrations/models and try again.
(venv) (base)  mecilmeng@MecildeMacBook-Pro  ~/Homework/Jcble_projects/jcble_web_2022_09/backend  aerich init-db
Traceback (most recent call last):
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/bin/aerich", line 8, in <module>
    sys.exit(main())
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 257, in main
    cli()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 31, in wrapper
    loop.run_until_complete(f(*args, **kwargs))
  File "/Users/mecilmeng/miniforge3/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 231, in init_db
    await command.init_db(safe)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/__init__.py", line 140, in init_db
    version = await Migrate.generate_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 102, in generate_version
    last_version_num = await cls._get_last_version_num()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 93, in _get_last_version_num
    last_version = await cls.get_last_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 55, in get_last_version
    return await Aerich.filter(app=cls.app).first()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 1220, in filter
    return cls._meta.manager.get_queryset().filter(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/manager.py", line 15, in get_queryset
    return QuerySet(self._model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 297, in __init__
    super().__init__(model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 94, in __init__
    self.capabilities: Capabilities = model._meta.db.capabilities
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 283, in db
    raise ConfigurationError(
tortoise.exceptions.ConfigurationError: default_connection for the model <class 'aerich.models.Aerich'> cannot be None
(venv) (base)  ✘ mecilmeng@MecildeMacBook-Pro  ~/Homework/Jcble_projects/jcble_web_2022_09/backend  aerich init -t src.config.tortoise_conf.TORTOISE_ORM
Error: Error while importing configuration module: No module named 'src.config.tortoise_conf'
(venv) (base)  ✘ mecilmeng@MecildeMacBook-Pro  ~/Homework/Jcble_projects/jcble_web_2022_09/backend  aerich init -t src.config.tortoise_conf.TORTOISE_ORM
Success create migrate location ./migrations
Success write config to pyproject.toml
(venv) (base)  mecilmeng@MecildeMacBook-Pro  ~/Homework/Jcble_projects/jcble_web_2022_09/backend  aerich init-db                                      
Traceback (most recent call last):
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/bin/aerich", line 8, in <module>
    sys.exit(main())
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 257, in main
    cli()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 31, in wrapper
    loop.run_until_complete(f(*args, **kwargs))
  File "/Users/mecilmeng/miniforge3/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/cli.py", line 231, in init_db
    await command.init_db(safe)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/__init__.py", line 140, in init_db
    version = await Migrate.generate_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 102, in generate_version
    last_version_num = await cls._get_last_version_num()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 93, in _get_last_version_num
    last_version = await cls.get_last_version()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/aerich/migrate.py", line 55, in get_last_version
    return await Aerich.filter(app=cls.app).first()
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 1220, in filter
    return cls._meta.manager.get_queryset().filter(*args, **kwargs)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/manager.py", line 15, in get_queryset
    return QuerySet(self._model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 297, in __init__
    super().__init__(model)
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/queryset.py", line 94, in __init__
    self.capabilities: Capabilities = model._meta.db.capabilities
  File "/Users/mecilmeng/Homework/Jcble_projects/jcble_web_2022_09/backend/venv/lib/python3.9/site-packages/tortoise/models.py", line 283, in db
    raise ConfigurationError(
tortoise.exceptions.ConfigurationError: default_connection for the model <class 'aerich.models.Aerich'> cannot be None
Mecil9 commented 1 year ago

o ,i found error......i forgot add "aerich.models" to the models list last place!