Jadual Kandungan
Kandungan soalan
Penyelesaian
Rumah pembangunan bahagian belakang Golang Gorm mengembalikan ralat pengimbas pada jenis rentetan tersuai

Gorm mengembalikan ralat pengimbas pada jenis rentetan tersuai

Feb 11, 2024 pm 06:21 PM
overflow

Gorm 在自定义字符串类型上返回扫描仪错误

pengenalan pisang editor php: Di Gorm, apabila anda cuba melakukan operasi imbasan pada jenis rentetan tersuai, anda mungkin menghadapi ralat. Isu ini boleh menyebabkan pengimbas gagal menghuraikan rentetan dengan betul, mengakibatkan ralat program. Ini kerana Gorm menggunakan kaedah `Imbas` secara lalai untuk mengimbas medan jenis rentetan, tetapi untuk jenis rentetan tersuai, kaedah `Imbas` mungkin tidak mengendalikannya dengan betul. Penyelesaian kepada masalah ini ialah menggunakan kaedah `Nilai` untuk menghuraikan rentetan secara manual untuk memastikan program dijalankan dengan betul. Dengan cara ini anda boleh mengelak daripada menghadapi masalah dengan ralat pengimbas semasa menggunakan Gorm.

Kandungan soalan

Saya menulis entiti berikut:

type datacategory string

const (
    datacategory1 datacategory = "category1"
    datacategory2 datacategory = "category2"
)

type data struct {
    name            string         `json:"name"`
    categories      []datacategory `json:"category" gorm:"type:text[]"`
}
Salin selepas log masuk

Saya mencipta baris secara manual dalam pangkalan data dan mengisi jenis tatasusunan kategori dengan kategori1 dan kategori2.

Tetapi ralat berikut berlaku semasa membaca data:

sql: scan error on column index 19, name "category": unsupported scan, storing driver.value type string into type *[]datacategory
Salin selepas log masuk

Contoh kaedah nilai:

func (s DataCategorySlice) Value() (driver.Value, error) {
    if s == nil {
        return nil, nil
    }
    if len(s) == 0 {
        return "{}", nil
    }

    v := []string{}
    for _, dc := range s {
        v = append(v, string(dc))
    }
    result := fmt.Sprintf("{%s}", strings.Join(v, ","))
    return result, nil
}
Salin selepas log masuk

Penyelesaian

Contoh berikut menganggap anda menggunakan postgresql sebagai rdbms anda dan nilai datacategory tidak mengandungi koma atau petikan tunggal yang tidak dilepaskan.

// declare the custom type
type datacategoryslice []datacategory
Salin selepas log masuk
// implement driver.valuer to encode the value into the
// correct format that is accepted by the target rdbms
func (s datacategoryslice) value() (driver.value, error) {
    if s == nil {
        return nil, nil
    }
    if len(s) == 0 {
        return []byte(`{}`), nil
    }

    v := []byte(`{`)
    for i := range s {
        v = append(v, s[i]...)
        v = append(v, ',')
    }
    v[len(v)-1] = '}' // replace last comma with closing brace
    return v, nil
}
Salin selepas log masuk
// implement scanner to decode the raw source
// value as retrieved from the database
func (s *datacategoryslice) scan(src any) error {
    var data []byte
    switch v := src.(type) {
    case []byte:
        data = v
    case string:
        data = []byte(v)
    case nil:
        return nil
    default:
        return fmt.errorf("unsupported type: %t", src)
    }
    if len(data) == 0 {
        return nil
    }
    data = data[1:len(data)-1] // remove surrounding braces
    for _, v := range bytes.split(data, []byte{','}) {
        *s = append(*s, datacategory(v))
    }
    return nil
}
Salin selepas log masuk

Atau, jika dari value() (driver.value, error) 返回 <code>[]byte 不起作用,例如它会导致 “错误:格式错误的数组文字:<hex 字段值的表示形式> (sqlstate 22p02)”,那么您可以尝试使用 string sebagai jenis pulangan.

Contoh daripada @kozhioyrin

// implement driver.Valuer to encode the value into the
// correct format that is accepted by the target RDBMS
func (s DataCategorySlice) Value() (driver.Value, error) {
    if s == nil {
        return nil, nil
    }
    if len(s) == 0 {
        return "{}", nil
    }

    v := []string{}
    for _, dc := range s {
        v = append(v, string(dc))
    }
    result := fmt.Sprintf("{%s}", strings.Join(v, ","))
    return result, nil
}
Salin selepas log masuk

Atas ialah kandungan terperinci Gorm mengembalikan ralat pengimbas pada jenis rentetan tersuai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Harga Bitcoin sejak kelahirannya 2009-2025 Ringkasan paling lengkap harga sejarah BTC Jan 15, 2025 pm 08:11 PM

Sejak penubuhannya pada tahun 2009, Bitcoin telah menjadi peneraju dalam dunia mata wang kripto dan harganya telah mengalami turun naik yang besar. Untuk memberikan gambaran keseluruhan sejarah yang komprehensif, artikel ini menyusun data harga Bitcoin dari 2009 hingga 2025, meliputi peristiwa pasaran utama, perubahan dalam sentimen pasaran dan faktor penting yang mempengaruhi pergerakan harga.

Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang Perkara yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang_Apa yang perlu dilakukan jika masa di sudut kanan bawah Windows 11 hilang May 06, 2024 pm 01:20 PM

1. Mula-mula, klik kanan pada ruang kosong bar tugas di bahagian bawah Windows 11 dan pilih [Taskbar Settings]. 2. Cari [taskbarcorneroverflow] di sebelah kanan dalam tetapan bar tugas. 3. Kemudian cari [jam] atau [Jam] di atasnya dan pilih untuk menghidupkannya. Kaedah 2: 1. Tekan pintasan papan kekunci [win+r] untuk memanggil larian, masukkan [regedit] dan tekan Enter untuk mengesahkan. 2. Buka editor pendaftaran, cari [HKEY_CURRENT_USERControlPanel] di dalamnya dan padamkannya. 3. Selepas memadam, mulakan semula komputer dan anda akan digesa untuk konfigurasi Apabila anda kembali ke sistem, masa akan dipaparkan.

Adakah terdapat forum komuniti atau kumpulan perbincangan untuk fungsi Java di mana saya boleh bertanya dan membincangkannya? Adakah terdapat forum komuniti atau kumpulan perbincangan untuk fungsi Java di mana saya boleh bertanya dan membincangkannya? Apr 28, 2024 pm 02:12 PM

Jawapan: Forum komuniti dan kumpulan perbincangan berikut tersedia untuk soalan pengaturcaraan fungsi Java: StackOverflow: Tapak web Soal Jawab pengaturcaraan terbesar di dunia dengan komuniti pakar pengaturcaraan fungsi Java. JavaFunctionalProgramming: Forum komuniti yang memfokuskan pada pengaturcaraan berfungsi Java, menyediakan perbincangan tentang konsep, ciri bahasa dan amalan terbaik. Redditr/functionaljava: Subreddit memfokuskan pada pengaturcaraan Java berfungsi, memfokuskan pada alatan, perpustakaan dan teknologi. Discord: JavaFunctional Programming: Perkhidmatan Discord yang menyediakan perbincangan masa nyata, perkongsian kod dan kerjasama

Bagaimana untuk menggunakan kod orang lain dalam python Bagaimana untuk menggunakan kod orang lain dalam python May 05, 2024 pm 07:54 PM

Bagaimanakah saya menggunakan kod Python orang lain? Cari repositori kod: Cari kod yang anda perlukan pada platform seperti PyPI dan GitHub. Kod pemasangan: Gunakan pip atau klon repositori GitHub untuk memasang. Import modul: Gunakan pernyataan import dalam skrip anda untuk mengimport modul yang dipasang. Bekerja dengan kod: Akses fungsi dan kelas dalam modul. (Pilihan) Sesuaikan kod: Ubah suai kod mengikut keperluan agar sesuai dengan projek anda.

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Bagaimana untuk melaraskan masa yang salah pada komputer Windows 11 May 03, 2024 pm 09:20 PM

Apakah yang perlu saya lakukan jika masa pada komputer win11 saya sentiasa salah? Kita semua menetapkan masa atau kalendar apabila menggunakan sistem win11, tetapi ramai pengguna bertanya bahawa masa komputer sentiasa salah, jadi apa yang berlaku? Pengguna boleh terus mengklik pada bar tugas di bawah, dan kemudian mencari taskbarcorneroverflow untuk menyediakannya. Biarkan tapak ini memperkenalkan kepada pengguna secara terperinci cara melaraskan ralat masa pada komputer Win11. Cara melaraskan masa yang salah pada komputer Windows 11 Kaedah 1: 1. Mula-mula kita klik kanan pada ruang kosong bar tugas di bawah dan pilih Tetapan Bar Tugas. Kaedah 2: 1. Tekan pintasan papan kekunci win+r untuk memanggil run, masukkan regedit dan tekan Enter untuk mengesahkan.

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java May 03, 2024 pm 02:09 PM

Jenis pengecualian biasa dan langkah pembaikan mereka dalam pembangunan fungsi Java Semasa pembangunan fungsi Java, pelbagai pengecualian mungkin ditemui, yang menjejaskan pelaksanaan fungsi yang betul. Berikut ialah jenis pengecualian biasa dan langkah pembaikannya: 1. Perihalan NullPointerException: Dilemparkan apabila mengakses objek yang belum dimulakan. Betulkan: Pastikan anda menyemak objek untuk bukan nol sebelum menggunakannya. Contoh kod: cuba{Stringname=null;System.out.println(name.length());}catch(NullPointerExceptione){

Apakah maksud limpahan dalam css Apakah maksud limpahan dalam css Apr 28, 2024 pm 03:15 PM

limpahan ialah sifat CSS yang digunakan untuk mengawal mod paparan kandungan elemen apabila ia melebihi bekas Nilai yang tersedia termasuk: kelihatan: kandungan kelihatan, bekas limpahan tersembunyi: kandungan limpahan dipotong tatal: yang. bar skrol dipaparkan untuk melihat kandungan limpahan auto: penyemak imbas secara automatik menentukan Sama ada untuk memaparkan bar skrol mewarisi: mewarisi atribut limpahan elemen induk

Adakah tiada sesiapa yang menjaga akaun rawak Douyin? Bolehkah saya membuat rayuan untuk kali kedua? Adakah tiada sesiapa yang menjaga akaun rawak Douyin? Bolehkah saya membuat rayuan untuk kali kedua? May 03, 2024 am 09:37 AM

Sebagai platform video pendek yang terkenal di dunia, Douyin mempunyai pangkalan pengguna dan pencipta kandungan yang besar. Walau bagaimanapun, memandangkan peraturan platform sentiasa dikemas kini dan dipertingkatkan, sesetengah pengguna mungkin menghadapi larangan akaun. Ini telah menimbulkan persoalan umum tentang ketelusan dan keadilan pengurusan platform. Artikel ini akan membincangkan isu larangan akaun Douyin dan sama ada pengguna mempunyai cara untuk merayu selepas akaun mereka diharamkan. Mungkin terdapat banyak sebab untuk diharamkan pada platform Douyin, termasuk tetapi tidak terhad kepada kandungan haram, pelanggaran peraturan platform, pelanggaran hak orang lain, dsb. Untuk mengekalkan susunan platform dan kepentingan pengguna, Douyin telah menyediakan satu siri peraturan dan mekanisme semakan. Apabila sesetengah pengguna melanggar peraturan, akaun mereka mungkin diharamkan. Walau bagaimanapun, sesetengah pengguna mungkin mempersoalkan atau tidak berpuas hati dengan sebab larangan tersebut

See all articles