簡體   English   中英

如何修復Web2Py“ <class 'sqlite3.IntegrityError'> (外鍵約束失敗)“?

[英]How to fix Web2Py “<class 'sqlite3.IntegrityError'>(foreign key constraint failed)”?

我試圖將新記錄添加到引用另一個表的數據庫表中,我從Web2Py收到此錯誤:“(外鍵約束失敗)”。

我正在關注Web2Py書籍示例,如下所示:

第7章:表單和驗證器

引用記錄的鏈接

現在考慮由引用字段鏈接的兩個表的情況。 例如:

 db.define_table('person', Field('name', requires=IS_NOT_EMPTY())) db.define_table('dog', Field('owner', 'reference person'), Field('name', requires=IS_NOT_EMPTY())) db.dog.owner.requires = IS_IN_DB(db, 'person.id', '%(name)s') 

一個人有狗,每只狗屬於一個人,這是一個人。 狗主人需要通過'%(name)s'引用有效的db.person.id。

這是我感到困惑的地方,因為我相信我會關注這個例子,除非我真的忘記了我的錯誤。

我正在使用的模型如下。

我試圖從一個表單創建一個需要藝術家存在的專輯,這是藝術家唱片所做的。

db.define_table('artist',
               Field('name', requires=(IS_SLUG(),
                                       IS_NOT_IN_DB(db, 'artist.name'))),
               auth.signature)

# IS_SLUG removes special chars, IS_NOT_IN_DB makes it unique
db.define_table('album',
               Field('name', requires=(IS_SLUG(),
                                       IS_NOT_IN_DB(db, 'album.name'))),
               Field('artist_id', 'reference artist'), ### HERE ###
               Field('album_art', 'upload'),
               Field('chapter', 'integer', requires=IS_NOT_EMPTY()),
               Field('act', 'integer', default=0),
               Field('release_date', 'date', requires=IS_NOT_EMPTY()),
               Field('num_of_tracks', 'integer', default=0),
               auth.signature)

db.album.artist_id.requires = IS_IN_DB(db, 'artist.id', '%(name)s')

我希望表單插入專輯,就像藝術家表單一樣。

我知道引用引起了這個問題,如果有人能幫我看看我的錯誤,我真的很感激。

最新的Firefox Developer Edition存在Web2Py問題。

我切換到Chrome,一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM