Py学习  »  DATABASE

MySQL C API在子查询返回超过1行时出错

KaibutsuX • 3 年前 • 1162 次点击  

从mysql终端:

SELECT 1, (SELECT user_id FROM users);

错误1242(21000):子查询返回超过1行

在C代码中:

ret = mysql_query("SELECT 1, (SELECT user_id FROM users)");
printf("Ret is %d\n", ret); // -->  "Ret is 0"

这是mysql C api中的错误吗?我无法从此查询中获取任何错误信息。二者都 mysql_errno() mysql_error() 一无所获。就API而言,查询已成功运行。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129799
 
1162 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Barmar
Reply   •   1 楼
Barmar    4 年前

在您呼叫之前不会报告此错误 mysql_store_result .

ret = mysql_query(con, "SELECT 1, (SELECT user_id FROM users)");
printf("Ret is %d\n", ret); // -->  "Ret is 0"
MYSQL_RES *result = mysql_store_result(con);
if (result == NULL) {
    printf("Error is %s", mysql_error(con); // prints "Subquery returns more than 1 row"
}