iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
自我挑戰組

第一次團體專題系列 第 13

Day 13 : 第一次規則嘗試

  • 分享至 

  • xImage
  •  

因為要將寫好的程式和預寫資料庫給組員跑後面的廣告算法,但Amazon collection不同帳號無法共用id結果,所以寫了一個規則,讓組員依照順序送入VM辨識圖片,把會員id為空的依序先填入,因為會員資料預寫了性別所以需要送入對應性別的照片,會員資料才不會誤植。
可能這不是最佳解法或是通用做法,但還是做個紀錄。

--
難點紀錄
Flask /upload_face 上傳錯誤問題

遇到的難點
1. 後端報錯位置
• 錯誤發生在 upload_face → database.create_member → conn.execute。
• Log 顯示 SQL 執行時中斷,但沒有完整訊息。
2. 可能的錯誤原因
• 主鍵衝突:由 recognizer.derive_member_id(encoding) 產生的 member_id 已存在,導致 PRIMARY KEY constraint failed。
• 欄位數不一致:INSERT INTO ... VALUES (...) 的欄位數與傳入值數量不符。
• 欄位型別錯誤:例如 encoding 是 numpy array/dict,未轉換成 string/blob,導致 SQL 插入失敗。

解決方式建議
1. 加上除錯輸出
• 在 database.py 第 280 行前加上 debug log:

用來檢查 member_id 與 encoding 的實際內容與型別。

2.	檢查 SQL 語法與欄位
•	確認 create_member 的 INSERT 指定的欄位數量與傳入值一致。
•	確認資料表 schema 中欄位型別與實際存入值相容(例如 encoding 應存成 TEXT 或 BLOB)。
3.	避免主鍵衝突
•	若 member_id 有可能重複,建議改用 uuid4().hex 產生唯一 ID。
•	或者在插入前先查詢是否已存在相同 member_id,再決定要 INSERT 或 UPDATE。

📌 結論:
錯誤來自 SQL conn.execute,最有可能是 主鍵衝突或欄位型別不符。短期建議先加 debug 輸出檢查 member_id 與 encoding 的內容,長期可改用 UUID 或加入判斷邏輯,避免重複與型別錯誤。

以下為google目前的培訓資料分享:
https://rsvp.withgoogle.com/events/csj-tw-2025/home
https://www.managertoday.com.tw/articles/view/70988?


上一篇
Day 12 : 專題目前進度演示+廣告播放裝置方案選擇
下一篇
Day 14 : vibe coding 經驗分享
系列文
第一次團體專題14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言