很多学习tortoise-ORM的同学卡在了初始化数据这一步,在执行aerich init-db 时报错:tortoise.exceptions.ConfigurationError: DB configuration not initialised. Make sure to call Tortoise.init with a valid configuration before attempting to create connections.
Inited models already, or delete migrations\models and try again. # 其实终端报错就已经给了你提示了
原因:models模型代码没有写好(错写或漏写)就执行了 aerich init -t settings.TORTOISE_ORM 命令,导致产生了错误的初始化数据。
此时,你在使用aerich init-db时就在缓存文件里面找不到对应的初始化配置数据,就会产生报错,即DB 配置初始化未完成。
解决方法:
- 检查models是否有漏泄或误写
- 删除空的migrations文件夹(全删)
- 再次执行aerich init -t settings.TORTOISE_ORM
- 执行aerich init-db
- 检查数据库表是否生成正确
请看报错源代码:
PS D:\Workspace\Fastapi\BlogSys\blogBlackend> aerich init-db
D:\Workspace\Fastapi\BlogSys\blogBlackend\settings.py:32: RuntimeWarning: coroutine 'Tortoise.init' was never awaited
Tortoise.init(config=TORTOISE_ORM)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
D:\Workspace\Fastapi\BlogSys\blogBlackend\settings.py:34: RuntimeWarning: coroutine 'Tortoise.generate_schemas' was never awaited
Tortoise.generate_schemas()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Inited models already, or delete migrations\models and try again.
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Scripts\aerich.exe\__main__.py", line 7, in <module>
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\aerich\cli.py", line 265, in main
cli()
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\click\core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\click\core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\click\core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\click\core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\click\core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\click\decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\aerich\cli.py", line 34, in wrapper
loop.run_until_complete(Tortoise.close_connections())
File "D:\Python 3.12.3\Lib\asyncio\base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\tortoise\__init__.py", line 551, in close_connections
await connections.close_all()
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\tortoise\connection.py", line 188, in close_all
tasks = [conn.close() for conn in self.all()]
^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\tortoise\connection.py", line 177, in all
return [self.get(alias) for alias in self.db_config]
^^^^^^^^^^^^^^
File "D:\Workspace\Fastapi\BlogSys\blogBlackend\.venv\Lib\site-packages\tortoise\connection.py", line 48, in db_config
raise ConfigurationError(
tortoise.exceptions.ConfigurationError: DB configuration not initialised. Make sure to call Tortoise.init with a valid configuration before attempting to create connections.