fastapi-amis-admin icon indicating copy to clipboard operation
fastapi-amis-admin copied to clipboard

fastapi_user_auth使用pgsql时,字段ID有冲突,可以修下吗

Open majormj opened this issue 4 months ago • 0 comments

fastapi_user_auth使用pgsql时,字段ID有冲突,可以修下吗

(.venv) E:\giteeMy\webadmin>faa run INFO: Will watch for changes in these directories: ['D:\MyDisk\workFile\giteeMy\webadmin\fastadmin\backend'] INFO: Uvicorn running on http://127.0.0.1:6003/ (Press CTRL+C to quit) INFO: Started reloader process [51316] using StatReload INFO: Started server process [53032] INFO: Waiting for application startup. ERROR: Traceback (most recent call last): File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 545, in _prepare_and_execute self._rows = deque(await prepared_stmt.fetch(*parameters)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\asyncpg\prepared_stmt.py", line 176, in fetch data = await self.__bind_execute(args, 0, timeout) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\asyncpg\prepared_stmt.py", line 267, in __bind_execute data, status, _ = await self.__do_execute( ^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\asyncpg\prepared_stmt.py", line 256, in __do_execute return await executor(protocol) ^^^^^^^^^^^^^^^^^^^^^^^^ File "asyncpg\protocol\protocol.pyx", line 206, in bind_execute asyncpg.exceptions.NotNullViolationError: null value in column "id" of relation "auth_casbin_rule" violates not-null constraint DETAIL: Failing row contains (null, g2, ff4e845527b1fc39, d176af10e6020849, null, null, null, null).

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 580, in execute self.adapt_connection.await( File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 132, in await_only return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 558, in _prepare_and_execute self._handle_exception(error) File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 508, in _handle_exception self._adapt_connection._handle_exception(error) File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 792, in _handle_exception raise translated_error from error sqlalchemy.dialects.postgresql.asyncpg.AsyncAdapt_asyncpg_dbapi.IntegrityError: <class 'asyncpg.exceptions.NotNullViolationError'>: null value in column "id" of relation "auth_casbin_rule" violates not-null constraint DETAIL: Failing row contains (null, g2, ff4e845527b1fc39, d176af10e6020849, null, null, null, null).

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "e:\giteeMy\webadmin.venv\Lib\site-packages\starlette\routing.py", line 694, in lifespan async with self.lifespan_context(app) as maybe_state: File "d:\Program Files\python\Python311\Lib\contextlib.py", line 210, in aenter return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\fastapi\routing.py", line 134, in merged_lifespan async with original_context(app) as maybe_original_state: File "d:\Program Files\python\Python311\Lib\contextlib.py", line 210, in aenter return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\fastapi\routing.py", line 134, in merged_lifespan async with original_context(app) as maybe_original_state: File "d:\Program Files\python\Python311\Lib\contextlib.py", line 210, in aenter return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\fastapi\routing.py", line 134, in merged_lifespan async with original_context(app) as maybe_original_state: File "e:\giteeMy\webadmin.venv\Lib\site-packages\starlette\routing.py", line 571, in aenter await self._router.startup() File "e:\giteeMy\webadmin.venv\Lib\site-packages\starlette\routing.py", line 671, in startup await handler() File "D:\MyDisk\workFile\giteeMy\webadmin\fastadmin\backend\main.py", line 45, in startup await site.router.startup() File "e:\giteeMy\webadmin.venv\Lib\site-packages\starlette\routing.py", line 671, in startup await handler() File "e:\giteeMy\webadmin.venv\Lib\site-packages\fastapi_user_auth\admin\admin.py", line 391, in _load_policy await self.load_policy() File "e:\giteeMy\webadmin.venv\Lib\site-packages\fastapi_user_auth\admin\admin.py", line 396, in load_policy await update_casbin_site_grouping(self.site.auth.enforcer, self.site) File "e:\giteeMy\webadmin.venv\Lib\site-packages\fastapi_user_auth\admin\utils.py", line 111, in update_casbin_site_grouping await enforcer.add_named_grouping_policies("g2", add_roles) File "e:\giteeMy\webadmin.venv\Lib\site-packages\casbin\async_management_enforcer.py", line 249, in add_named_grouping_policies rules_added = await self._add_policies("g", ptype, rules) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\casbin\async_internal_enforcer.py", line 151, in _add_policies result = await self.adapter.add_policies(sec, ptype, rules) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\fastapi_user_auth\utils\sqlachemy_adapter.py", line 152, in add_policies await self.db.async_execute(insert(self._db_class).values(values)) File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\ext\asyncio\scoping.py", line 589, in execute return await self._proxied.execute( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlmodel\ext\asyncio\session.py", line 143, in execute return await super().execute( ^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\ext\asyncio\session.py", line 463, in execute result = await greenlet_spawn( ^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 201, in greenlet_spawn result = context.throw(*sys.exc_info()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlmodel\orm\session.py", line 127, in execute return super().execute( ^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2365, in execute return self._execute_internal( ^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\orm\session.py", line 2251, in _execute_internal result: Result[Any] = compile_state_cls.orm_execute_statement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\orm\bulk_persistence.py", line 1306, in orm_execute_statement result = conn.execute( ^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1419, in execute return meth( ^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\sql\elements.py", line 526, in _execute_on_connection return connection._execute_clauseelement( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1641, in _execute_clauseelement ret = self._execute_context( ^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1846, in _execute_context return self._exec_single_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1986, in _exec_single_context self._handle_dbapi_exception( File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 2355, in _handle_dbapi_exception raise sqlalchemy_exception.with_traceback(exc_info[2]) from e File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\base.py", line 1967, in _exec_single_context self.dialect.do_execute( File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\engine\default.py", line 951, in do_execute cursor.execute(statement, parameters) File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 580, in execute self.adapt_connection.await( File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 132, in await_only return current.parent.switch(awaitable) # type: ignore[no-any-return,attr-defined] # noqa: E501 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\util_concurrency_py3k.py", line 196, in greenlet_spawn value = await result ^^^^^^^^^^^^ File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 558, in _prepare_and_execute self._handle_exception(error) File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 508, in _handle_exception self._adapt_connection._handle_exception(error) File "e:\giteeMy\webadmin.venv\Lib\site-packages\sqlalchemy\dialects\postgresql\asyncpg.py", line 792, in _handle_exception raise translated_error from error sqlalchemy.exc.IntegrityError: (sqlalchemy.dialects.postgresql.asyncpg.IntegrityError) <class 'asyncpg.exceptions.NotNullViolationError'>: null value in column "id" of relation "auth_casbin_rule" violates not-null constraint DETAIL: Failing row contains (null, g2, ff4e845527b1fc39, d176af10e6020849, null, null, null, null). [SQL: INSERT INTO auth_casbin_rule (id, ptype, v0, v1, v2, v3, v4, v5) VALUES ($1::INTEGER, $2::VARCHAR, $3::VARCHAR, $4::VARCHAR, $5::VARCHAR, $6::VARCHAR, $7::VARCHAR, $8::VARCHAR), ($9::INTEGER, $10::VARCHAR, $11::VARCHAR, $12::VARCHAR, $13::VARCHAR, $14::VARCHAR, $15::VARCHAR, $16::VARCHAR), ($17::INTEGER, $18::VARCHAR, $19::VARCHAR, $20::VARCHAR, $21::VARCHAR, $22::VARCHAR, $23::VARCHAR, $24::VARCHAR), ($25::INTEGER, $26::VARCHAR, $27::VARCHAR, $28::VARCHAR, $29::VARCHAR, $30::VARCHAR, $31::VARCHAR, $32::VARCHAR), ($33::INTEGER, $34::VARCHAR, $35::VARCHAR, $36::VARCHAR, $37::VARCHAR, $38::VARCHAR, $39::VARCHAR, $40::VARCHAR), ($41::INTEGER, $42::VARCHAR, $43::VARCHAR, $44::VARCHAR, $45::VARCHAR, $46::VARCHAR, $47::VARCHAR, $48::VARCHAR), ($49::INTEGER, $50::VARCHAR, $51::VARCHAR, $52::VARCHAR, $53::VARCHAR, $54::VARCHAR, $55::VARCHAR, $56::VARCHAR), ($57::INTEGER, $58::VARCHAR, $59::VARCHAR, $60::VARCHAR, $61::VARCHAR, $62::VARCHAR, $63::VARCHAR, $64::VARCHAR), ($65::INTEGER, $66::VARCHAR, $67::VARCHAR, $68::VARCHAR, $69::VARCHAR, $70::VARCHAR, $71::VARCHAR, $72::VARCHAR), ($73::INTEGER, $74::VARCHAR, $75::VARCHAR, $76::VARCHAR, $77::VARCHAR, $78::VARCHAR, $79::VARCHAR, $80::VARCHAR), ($81::INTEGER, $82::VARCHAR, $83::VARCHAR, $84::VARCHAR, $85::VARCHAR, $86::VARCHAR, $87::VARCHAR, $88::VARCHAR), ($89::INTEGER, $90::VARCHAR, $91::VARCHAR, $92::VARCHAR, $93::VARCHAR, $94::VARCHAR, $95::VARCHAR, $96::VARCHAR), ($97::INTEGER, $98::VARCHAR, $99::VARCHAR, $100::VARCHAR, $101::VARCHAR, $102::VARCHAR, $103::VARCHAR, $104::VARCHAR), ($105::INTEGER, $106::VARCHAR, $107::VARCHAR, $108::VARCHAR, $109::VARCHAR, $110::VARCHAR, $111::VARCHAR, $112::VARCHAR), ($113::INTEGER, $114::VARCHAR, $115::VARCHAR, $116::VARCHAR, $117::VARCHAR, $118::VARCHAR, $119::VARCHAR, $120::VARCHAR), ($121::INTEGER, $122::VARCHAR, $123::VARCHAR, $124::VARCHAR, $125::VARCHAR, $126::VARCHAR, $127::VARCHAR, $128::VARCHAR), ($129::INTEGER, $130::VARCHAR, $131::VARCHAR, $132::VARCHAR, $133::VARCHAR, $134::VARCHAR, $135::VARCHAR, $136::VARCHAR), ($137::INTEGER, $138::VARCHAR, $139::VARCHAR, $140::VARCHAR, $141::VARCHAR, $142::VARCHAR, $143::VARCHAR, $144::VARCHAR), ($145::INTEGER, $146::VARCHAR, $147::VARCHAR, $148::VARCHAR, $149::VARCHAR, $150::VARCHAR, $151::VARCHAR, $152::VARCHAR), ($153::INTEGER, $154::VARCHAR, $155::VARCHAR, $156::VARCHAR, $157::VARCHAR, $158::VARCHAR, $159::VARCHAR, $160::VARCHAR)] [parameters: (None, 'g2', 'ff4e845527b1fc39', 'd176af10e6020849', None, None, None, None, None, 'g2', 'Auth>UserAuthApp', 'Auth>CasbinRuleAdmin', None, None, None, None, None, 'g2', 'Auth>UserAuthApp', 'Auth>UserLoginFormAdmin', None, None, None, None, None, 'g2', 'Auth>UserAuthApp', 'Auth>LoginHistoryAdmin', None, None, None, None, None, 'g2', 'ff4e845527b1fc39', '8076bf7505129a37', None, None, None, None, None, 'g2', 'AuthAdminSite', '0765cdf25a1f9548', None, None, None, None, None, 'g2' ... 60 parameters truncated ... None, None, None, 'g2', 'Auth>UserAuthApp', 'Auth>RoleAdmin', None, None, None, None, None, 'g2', 'AuthAdminSite', 'd65eb9b589c98b09', None, None, None, None, None, 'g2', 'AuthAdminSite', '4b6745b827e4808f', None, None, None, None, None, 'g2', 'Auth>UserAuthApp', 'Auth>UserAdmin', None, None, None, None, None, 'g2', 'AuthAdminSite', 'ff4e845527b1fc39', None, None, None, None, None, 'g2', 'f736aeb720a47010', 'b19cc208ea4e2622', None, None, None, None)] (Background on this error at: https://sqlalche.me/e/20/gkpj)

majormj avatar Sep 19 '25 08:09 majormj