db.QueryRow() 返回错误数量的参数
db.QueryRow() returning the wrong number of arguments
我有一个名为 user.go
的文件、函数 GetUserByUsernameOrEmail
returns 用户模型和一个错误。它从数据库中获取此用户信息。
我的目标是获取用户的所有参数 I SELECT
,但它 returns 比应有的少了一个。
这是针对 REST API,但模型本身确实是问题所在。用户有字段 user_id
uuid,user_username
string,user_email
string,user_hash
string,user_salt
string,user_verified
bool,user_admin
布尔,user_email_verified
布尔。
我没有尝试太多,因为我不知道如何继续。然而,为了调试,我创建了 8 个测试变量 test, test2...test8
。我打印了所有 8 个变量(有关更多信息,请参见下文)。
var test string
var test2 string
var test3 string
var test4 string
var test5 string
var test6 string
var test7 string
var test8 string
err = db.QueryRow(`
SELECT
user_id,
user_username,
user_email,
user_hash,
user_salt
user_verified,
user_admin,
user_email_verified
FROM users
WHERE user_`+field+`=
`, value).Scan(&test, &test2, &test3, &test4, &test5, &test6, &test7, &test8)
预期:我将8个字段扫描到我的8个变量,继续我的一天。
实际:2019/11/10 10:36:42 sql: expected 7 destination arguments in Scan, not 8
其他一些注意事项
我确实将它扫描到 7 个变量进行测试,并在记录 7 个变量时得到了这个:
5e5d2f4a-1f5b-418d-a262-a63c719a3ea4 test test@[domain].com [hash] [salt] false false
糟糕 - 我错过了 user_salt
和 user_verified
之间的逗号。感谢 mkopriva 的帮助。
我有一个名为 user.go
的文件、函数 GetUserByUsernameOrEmail
returns 用户模型和一个错误。它从数据库中获取此用户信息。
我的目标是获取用户的所有参数 I SELECT
,但它 returns 比应有的少了一个。
这是针对 REST API,但模型本身确实是问题所在。用户有字段 user_id
uuid,user_username
string,user_email
string,user_hash
string,user_salt
string,user_verified
bool,user_admin
布尔,user_email_verified
布尔。
我没有尝试太多,因为我不知道如何继续。然而,为了调试,我创建了 8 个测试变量 test, test2...test8
。我打印了所有 8 个变量(有关更多信息,请参见下文)。
var test string
var test2 string
var test3 string
var test4 string
var test5 string
var test6 string
var test7 string
var test8 string
err = db.QueryRow(`
SELECT
user_id,
user_username,
user_email,
user_hash,
user_salt
user_verified,
user_admin,
user_email_verified
FROM users
WHERE user_`+field+`=
`, value).Scan(&test, &test2, &test3, &test4, &test5, &test6, &test7, &test8)
预期:我将8个字段扫描到我的8个变量,继续我的一天。
实际:2019/11/10 10:36:42 sql: expected 7 destination arguments in Scan, not 8
其他一些注意事项 我确实将它扫描到 7 个变量进行测试,并在记录 7 个变量时得到了这个:
5e5d2f4a-1f5b-418d-a262-a63c719a3ea4 test test@[domain].com [hash] [salt] false false
糟糕 - 我错过了 user_salt
和 user_verified
之间的逗号。感谢 mkopriva 的帮助。