Go エラー: time.Time は driver.Valuer を実装していません (メソッドの値が欠落しています)

WBOY
リリース: 2024-02-09 12:18:09
転載
405 人が閲覧しました

Go エラー: time.Time は driver.Valuer を実装していません (メソッドの値が欠落しています)

php エディタ Zimo は、Go 言語を使用した開発中に一般的なエラー「Go エラー: time.Time は driver.Valuer を実装していません (メソッド Value is missing) )」に遭遇することがあります。このエラーは通常、time.Time 型の値をデータベースに保存するときに発生します。これは、time.Time 型が driver.Valuer インターフェイスを実装しておらず、Value メソッドが欠落していることを示しています。この問題を解決するには、新しい時間タイプをカスタマイズするか、サードパーティのライブラリを使用して時間タイプのストレージを処理するなど、さまざまな方法があります。この記事では、開発者がこの問題をよりよく理解して解決できるように、このエラーの原因と解決策を詳しく紹介します。

質問の内容

私は、setup.sh スクリプトを使用して作成した SQLite3 データベースから sqlboiler を使用してコードを生成する Go プロジェクトに取り組んでいます。解決できないエラーが発生しました。エラーメッセージは次のとおりです:

リーリー

このエラーは、graph/db/repositories.go ファイルの time.Time 値を使用しようとすると発生します。私のプロジェクトには golang:1.21-alpine3.18 Docker イメージを使用しています。

SQLite3 データベースのリポジトリ テーブルの created_at 列の型を変更しようとします。 TEXT および TIMESTAMP データ型を使用してテストしましたが、エラーは解決しません。

このエラーの原因と修正方法を知っている人はいますか?

repositories.go

リーリー

setup.sh

リーリー

sqlボイラー.toml

リーリー ###環境###
graph/db/repositories.go:998:23: cannot use o.CreatedAt (variable of type string) as driver.Valuer value in argument to queries.MustTime: string does not implement driver.Valuer (missing method Value)
graph/db/repositories.go:999:23: cannot use &o.CreatedAt (value of type *string) as sql.Scanner value in argument to queries.SetScanner: *string does not implement sql.Scanner (missing method Scan)
ログイン後にコピー

回避策

Go のリポジトリ構造を更新して、CreatedAt を time.Time フィールドとして持つようにします。 CreatedAt に値を割り当てる場合は、time.Time 値を使用します。たとえば、currTime := time.Now() 構造を次のようにします

リーリー

次に、CreatedAt 値を設定します:

リーリー

以上がGo エラー: time.Time は driver.Valuer を実装していません (メソッドの値が欠落しています)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!