Home / Duplicate entry when insert sessions table

有些時候,當要進入一個網站建立session時,便會出現這樣的錯誤訊息:
Fatal error: Duplicate entry 'ea2b42dccc4ec59222fa19b0e7ebad76' for key 1 query: INSERT INTO sessions (sid, uid, hostname, timestamp) VALUES ('ea2b42dccc4ec59222fa19b0e7ebad76', 0, '11.11.111.111', 1114188995) in /home/sites/drupal/includes/database.mysql.inc on line 66

目前原因不甚明確,有人說是因為sessions的sid欄位只有VARCHAR(32)太少,會出問題

解決方式:
1. 刪除sessions.*,重建sessions的資料表
2. 新建資料表時,記得把sid改更長一點 VARCHAR(64)

links:
http://drupal.org/node/17825
http://drupal.org/node/21120#comment-55192

re: Duplicate entry when insert sessions table

Drupal 是用 PHP 寫的,印象中 PHP 的 session id 就是 32 bytes,改 DB 端沒用。理論上 sid 不太可能 conflict。

這個問題看起來是程式沒有把 session 清掉的關係。可能是 Cookie 沒設好,browser 該清的沒有清。Web application 先天上沒辦法偵測 logout,難解。如果可以「確定」是要產生新的 session 的話,通常是會先檢查,把舊 session 砍掉再新增。

re: Duplicate entry when insert sessions table

jeffhung,
瞭解你的解惑!感謝~
我剛剛review過drupal處理session的code,也有如你所述的先檢查再新增。
看來原因還得再尋找。

re: Duplicate entry when insert sessions table

我的browser是Firefox,我将cookie清除掉后,就会引起sessions表的问题,是不是因为browser和server之间关于session的状态不一致,导致sessions表crash?

fdaabeg

Hello! fafegca interesting fafegca site!