Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Not a Bug
-
3.4.7
-
None
-
win10;MariaDB_11_8
Description
Where is MYSQL_TYPE_ENUM used?
int main() |
{
|
|
::MYSQL *mysql = defalt_init_mysql();
|
|
drop_table(mysql, "test_enum"); |
|
const char *create_sql = R"( |
CREATE TABLE IF NOT EXISTS test_enum (
|
id INT AUTO_INCREMENT PRIMARY KEY, |
status ENUM('active', 'inactive', 'banned') NOT NULL |
)
|
)";
|
execute_sql(mysql, create_sql);
|
|
const char *insert_sql = "INSERT INTO test_enum (status) VALUES (?)"; |
MYSQL_STMT *stmt = mysql_stmt_init(mysql);
|
|
if (mysql_stmt_prepare(stmt, insert_sql, strlen(insert_sql))) |
{
|
show_mysql_error(mysql, "准备语句失败"); |
return -1; |
}
|
|
MYSQL_BIND bind;
|
memset(&bind, 0, sizeof(bind)); |
|
std::string status_value = "active"; |
bind.buffer_type = MYSQL_TYPE_STRING; // OK |
// bind.buffer_type = MYSQL_TYPE_ENUM; // NOTE: error |
bind.buffer = (void *)status_value.c_str(); |
bind.buffer_length = status_value.length();
|
|
if (mysql_stmt_bind_param(stmt, &bind)) |
{
|
show_mysql_error(mysql, "绑定参数失败"); |
mysql_stmt_close(stmt);
|
return -1; |
}
|
|
// 执行插入 |
if (mysql_stmt_execute(stmt)) |
{
|
show_mysql_error(mysql, "执行失败"); |
}
|
else |
{
|
std::cout << "枚举值 '" << status_value << "' 插入成功!" << std::endl; |
}
|
|
mysql_stmt_close(stmt);
|
|
::mysql_close(mysql);
|
std::cout << "main done\n"; |
return 0; |
}
|
PS C:\Users\mcs\Desktop\lernning\code\vscode-sql\output\test_program\maria> ."C:/Users/mcs/Desktop/lernning/code/vscode-sql/output/test_program/maria/maria-test_enum.exe" |
枚举值 'active' 插入成功! |
main done
|
PS C:\Users\mcs\Desktop\lernning\code\vscode-sql\output\test_program\maria> ."C:/Users/mcs/Desktop/lernning/code/vscode-sql/output/test_program/maria/maria-test_enum.exe" |
绑定参数失败: (0) [00000] "" |