sql >> データベース >  >> RDS >> PostgreSQL

パニック:sql: golang、pq、sqlではなく、スキャンで1つの宛先引数が必要です

    クエリは、行ごとに1つのフィールドを返します。コードは3つをスキャンしています。おそらくあなたは次のようなものが欲しいでしょう:

    err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(m.Id, m.Type, m.Title)
    

    また、値へのポインタを渡します:

    err := db.QueryRow("SELECT data->>'id', data->>'type', data->>'title' FROM message WHERE data->>'id'=$1", id).Scan(&m.Id, &m.Type, &m.Title)
    

    もう1つのオプションは、データを単一のフィールドとしてフェッチし、encoding/jsonパッケージを使用して結果をデコードすることです。

    var p []byte
    err := db.QueryRow("SELECT data FROM message WHERE data->>'id'=$1", id).Scan(&p)
    if err != nil {
        // handle error
    }
    var m Message
    err := json.Unmarshal(p, &m)
    if err != nil {
        // handle error
    }
    



    1. 弱く型付けされたSYS_REFCURSORである変数の%ROWTYPEを宣言する方法は?

    2. MySQL 5.7.10でJSONデータ型列を更新するにはどうすればよいですか?

    3. SQLデータのPHP数学

    4. SQL Server 2008 の VARBINARY(MAX) フィールドからすべてのイメージをファイル システムにダンプする方法は?