fastapi-user-auth-demo icon indicating copy to clipboard operation
fastapi-user-auth-demo copied to clipboard

使用postgresql启动报错,sql语句错误,fastapi_amis_admin_nav库引起

Open ZanePoe opened this issue 1 year ago • 2 comments

当前版本: dependencies = [ "uvicorn>=0.18.3", "pydantic[dotenv]>=2.0.0", "pydantic-settings>=2.1.0", "aiosqlite>=0.15.0", "fastapi-user-auth<0.8.0,>=0.7.0", "fastapi-amis-admin-nav<0.2.0,>=0.1.3", "fastapi-scheduler<0.1.0,>=0.0.15", "sqlmodelx>=0.0.9", "alembic>=1.7.6", ] 经过多次验证,sqlite不会报错,但使用postgresql启动报错,报错原因为类型不匹配: 详细错误如下: Traceback (most recent call last): File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\starlette\routing.py", line 677, in lifespan async with self.lifespan_context(app) as maybe_state: File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\starlette\routing.py", line 566, in aenter await self._router.startup() File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\starlette\routing.py", line 654, in startup await handler() File "D:\code\github\fastapi-user-auth-demo.\backend\main.py", line 47, in startup await site.router.startup() File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\starlette\routing.py", line 654, in startup await handler() File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\fastapi_amis_admin_nav\admin.py", line 80, in sync_pages await self.site.db.async_run_sync( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy_database\database.py", line 193, in run_sync return await self.session.run_sync(fn, *args, **kwargs) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 389, in run_sync return await greenlet_spawn(fn, self.sync_session, *arg, **kw) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 192, in greenlet_spawn result = context.switch(value) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\fastapi_amis_admin_nav\admin.py", line 81, in lambda session: AmisPageManager(session).site_to_db(self.site).db_to_site(self.site) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\fastapi_amis_admin_nav\utils.py", line 70, in site_to_db parent_id = append_page_to_db(admin_group) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\fastapi_amis_admin_nav\utils.py", line 65, in append_page_to_db self.session.flush() # 刷新,获取page_id File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\orm\session.py", line 4312, in flush self._flush(objects) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\orm\session.py", line 4447, in _flush with util.safe_reraise(): File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\util\langhelpers.py", line 146, in exit raise exc_value.with_traceback(exc_tb) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\orm\session.py", line 4408, in _flush flush_context.execute() File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 466, in execute rec.execute(self) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 642, in execute util.preloaded.orm_persistence.save_obj( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\orm\persistence.py", line 93, in save_obj _emit_insert_statements( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\orm\persistence.py", line 1226, in _emit_insert_statements result = connection.execute( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1416, in execute return meth( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\sql\elements.py", line 516, in _execute_on_connection return connection._execute_clauseelement( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1639, in _execute_clauseelement ret = self._execute_context( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1848, in _execute_context return self._exec_single_context( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1988, in _exec_single_context self._handle_dbapi_exception( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\engine\base.py", line 2343, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1969, in _exec_single_context self.dialect.do_execute( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\engine\default.py", line 922, in do_execute cursor.execute(statement, parameters) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 591, in execute self.adapt_connection.await( File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 125, in await_only return current.driver.switch(awaitable) # type: ignore[no-any-return] File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 185, in greenlet_spawn value = await result File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 569, in _prepare_and_execute self._handle_exception(error) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 520, in _handle_exception self._adapt_connection._handle_exception(error) File "d:\code\github\fastapi-user-auth-demo.venv\lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 808, in _handle_exception raise translated_error from error sqlalchemy.exc.DBAPIError: (sqlalchemy.dialects.postgresql.asyncpg.Error) <class 'asyncpg.exceptions.DataError'>: invalid input for query argument $1: 6 (expected str, got int) [SQL: INSERT INTO system_page (type, url, label, icon, sort, "desc", page_schema, parent_id, unique_id, "tabsMode", visible, is_group, is_custom, is_active, is_locked, update_time) VALUES ($1::VARCHAR, $2::VARCHAR, $3::VARCHAR, $4::VARCHAR, $5::INTEGER, $6::VARCHAR, $7::VARCHAR, $8::INTEGER, $9::VARCHAR, $10::tabsmodeenum, $11::BOOLEAN, $12::BOOLEAN, $13::BOOLEAN, $14::BOOLEAN, $15::BOOLEAN, $16::TIMESTAMP WITHOUT TIME ZONE) RETURNING system_page.id] [parameters: (6, '/admin/', 'FastAPI-Amis-Admin', 'https://baidu.gitee.io/amis/static/favicon_b3b0647.png', 0, '', '{"label":"FastAPI-Amis-Admin","icon":"https://baidu.gitee.io/amis/static/favicon_b3b0647.png","url":"/admin/"}', None, 'AuthAdminSite', None, True, True, False, True, False, datetime.datetime(2023, 12, 28, 22, 40, 20, 849744))] (Background on this error at: https://sqlalche.me/e/20/dbapi)

ZanePoe avatar Dec 28 '23 14:12 ZanePoe

使用postgresql启动是提示缺少依赖,于是根据提示添加了两个库: "asyncpg>=0.29.0", "psycopg2>=2.9.9",

ZanePoe avatar Dec 28 '23 14:12 ZanePoe

怎么解决的? 我也是这样,但是加了依赖一样没有效果

Ly-star-bit avatar Jan 11 '24 07:01 Ly-star-bit