Skip to content

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

Description

@majormj

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions