You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Berikut tangkapan layar ralat yang diperolehi ketika menjalankan pelayan:
Pangakalan data: MySQL
Langkah penghasilan semula ralat:
Guna pangkalan data kosong (gugurkan semua jadual).
Jalankan pelayan dengan poetry run python ./samudra/serve.py.
Andaian saya, isu ini berkaitan dengan skema MySQL.
Langkah penyelesaian sementara yang dibuat dalam fail samudra/models/auth/pengguna.py:
Tukarkan lapangan peranan dalam kelas Keizinan dari peranan = TextField(null=False, unique=True) ke peranan = CharField(null=False, unique=True).
Tukarkan lapangan peranan dalam kelas Pengguna dari peranan = ForeignKeyField(model=Keizinan, field=Keizinan.peranan, backref='pengguna', on_delete='set default', default=RoleEnum.DEFAULT.value) ke peranan = ForeignKeyField(model=Keizinan, field=Keizinan.peranan, backref='pengguna', default=RoleEnum.DEFAULT.value).
Jadual-jadual akan berjaya dibuat. Namun, timbul isu baru ketika mendaftar sebagai pengguna baru:
Langkah penghasilan semula ralat:
Buat panggilan API dengan laluan authentication/daftar
Sejak a893b6d, saya tambah model Keizinan yang mewarisi BaseStrictTable. BaseStrictTable memastikan senarai data dalam jadual itu tidak ditambah sesuka hati (sebab keizinan hanya ada beberapa jenis sahaja, berbeza dengan jumlah pengguna yang boleh bertambah sebanyak-banyaknya), tetapi saya lupa memasukkan kaedah mengisi keizinan jadi apa-apa data yang bergantung kepada Keizinan akan gagal sebab tiada data keizinan.
# samudra/models/base.pyclassBaseStrictTable(BaseTable):
@classmethoddefget_or_create(cls, **kwargs):
# Saya matikan kaedah `get_or_create` untuk `BaseStrictTable`raiseAttributeError(
f"{cls} is a strict table. Rows can only be defined explicitly by the `Model.create` method.")
Boleh lakukan salah satu dari dua ini atau kedua-duanya sekali:
Tambah kaedah menambah data Keizinan melalui API
Buat satu fungsi agar setiap kali pangkalan data dicipta, satu baris data Keizinan dengan nilai RoleEnum.DEFAULT akan diisi. Jadi, pengguna-pengguna baharu akan dapat nilai RoleEnum.DEFAULT.
Berikut tangkapan layar ralat yang diperolehi ketika menjalankan pelayan:
Pangakalan data: MySQL
Langkah penghasilan semula ralat:
poetry run python ./samudra/serve.py
.Andaian saya, isu ini berkaitan dengan skema MySQL.
Langkah penyelesaian sementara yang dibuat dalam fail
samudra/models/auth/pengguna.py
:peranan
dalam kelasKeizinan
dariperanan = TextField(null=False, unique=True)
keperanan = CharField(null=False, unique=True)
.peranan
dalam kelasPengguna
dariperanan = ForeignKeyField(model=Keizinan, field=Keizinan.peranan, backref='pengguna', on_delete='set default', default=RoleEnum.DEFAULT.value)
keperanan = ForeignKeyField(model=Keizinan, field=Keizinan.peranan, backref='pengguna', default=RoleEnum.DEFAULT.value)
.Jadual-jadual akan berjaya dibuat. Namun, timbul isu baru ketika mendaftar sebagai pengguna baru:
Langkah penghasilan semula ralat:
authentication/daftar
The text was updated successfully, but these errors were encountered: