>  기사  >  백엔드 개발  >  Go 오류: time.Time이 드라이버.Valuer를 구현하지 않습니다(메서드 값이 누락됨).

Go 오류: time.Time이 드라이버.Valuer를 구현하지 않습니다(메서드 값이 누락됨).

WBOY
WBOY앞으로
2024-02-09 12:18:09397검색

Go 오류: time.Time이 드라이버.Valuer를 구현하지 않습니다(메서드 값이 누락됨).

PHP 편집기 Zimo는 Go 언어를 사용하여 개발하는 동안 다음과 같은 일반적인 오류가 발생할 수 있습니다. "Go 오류: time.Time이 드라이버.Valuer를 구현하지 않습니다(메소드 값이 누락됨)". 이 오류는 일반적으로 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 데이터베이스의 저장소 테이블에서 Create_at 열 유형을 변경해 보았습니다. TEXT 및 TIMESTAMP 데이터 유형을 사용하여 테스트했지만 오류가 지속됩니다.

이 오류의 원인과 해결 방법을 아는 사람이 있습니까?

repositories.go

으아악

setup.sh

으아악

sqlboiler.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)

해결 방법

CreatedAt를 time.Time 필드로 갖도록 Go의 저장소 구조를 업데이트한다고 말하고 싶습니다. CreatedAt에 값을 할당할 때 time.Time 값을 사용하세요. 예를 들어, currTime := time.Now() 구조를 다음과 같이 만드세요

으아악

그런 다음 CreatedAt 값을 설정합니다.

으아악

위 내용은 Go 오류: time.Time이 드라이버.Valuer를 구현하지 않습니다(메서드 값이 누락됨).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제