-
Notifications
You must be signed in to change notification settings - Fork 191
Description
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)