Uploaded image for project: 'MariaDB Connector/C'
  1. MariaDB Connector/C
  2. CONC-796

MYSQL_TYPE_ENUM can not bind status ENUM('active', 'inactive', 'banned')

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Critical
    • Resolution: Not a Bug
    • 3.4.7
    • N/A
    • Prepared Statements
    • 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] ""
      

      Attachments

        Activity

          People

            georg Georg Richter
            9587 mcs
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.