prisma與數(shù)據(jù)庫時間差8小時
在next.JS項目中使用prisma操作騰訊云mysql數(shù)據(jù)庫時,發(fā)現(xiàn)通過查詢得到的當(dāng)前時間與數(shù)據(jù)庫創(chuàng)建時間相差8小時。造成這種情況的原因可能是:
數(shù)據(jù)庫時區(qū)設(shè)置不當(dāng)。 prisma在創(chuàng)建數(shù)據(jù)時,會自動添加一個createdat時間戳。該時間戳是保存在數(shù)據(jù)庫中的,因此數(shù)據(jù)庫的時區(qū)設(shè)置會影響時間戳的準確性。
解決方法是確保數(shù)據(jù)庫的時區(qū)設(shè)置正確。對于騰訊云mysql 5.7版本,可以在命令行中使用以下命令設(shè)置時區(qū):
set global time_zone = '+08:00';
登錄后復(fù)制
如果 數(shù)據(jù)庫時區(qū)設(shè)定正確,但 時間依然有問題,問題就出在prisma本身。
prisma會根據(jù)環(huán)境變量tz來確定服務(wù)器的時區(qū)。在next.js項目中,該變量可能未正確設(shè)置。可以在.env文件中設(shè)置tz變量,如下所示:
TZ=Asia/Shanghai
登錄后復(fù)制
設(shè)置tz變量后,prisma將能夠正確設(shè)置服務(wù)器時區(qū),從而解決時間差問題。