MySQL Query执行但抛出异常

lal*_*lli 8 c++ mysql

我的代码:

try {
    sql::Driver *driver;
    sql::Connection *con;
    sql::Statement *stmt;

    /* Create a connection */
    driver = get_driver_instance();
    con = driver->connect("tcp://127.0.0.1:3306", "root", "123456");

    stmt = con->createStatement();
    stmt->executeQuery("CREATE USER 'user22'");

    delete stmt;
    delete con;

} catch (sql::SQLException &e) {
    cout << "# ERR: " << e.what();
    cout << " (MySQL error code: " << e.getErrorCode();
    cout << ", SQLState: " << e.getSQLState() << " )" << endl;
}
Run Code Online (Sandbox Code Playgroud)

创建user22但是还抛出一个(空?)异常:

# ERR:  (MySQL error code: 0, SQLState: 00000 )
Run Code Online (Sandbox Code Playgroud)

当然,重新执行它会导致适当的异常:

# ERR: Operation CREATE USER failed for 'user22'@'%' (MySQL error code: 1396, SQLState: HY000 )
Run Code Online (Sandbox Code Playgroud)

注释该executeQuery行不会导致例外(空白输出)这是常见的吗?我应该忽略这个吗?

Sou*_*man 18

您正在使用executeQuery,它应该返回 sql :: ResultSet对象,并且您正在查询返回true或false的"CREATE USER".

这种情况有一种执行方法.所以...

stmt = con->createStatement();
stmt->execute("CREATE USER 'user22'");
Run Code Online (Sandbox Code Playgroud)

不会抛出错误.

是的,我知道这个帖子已经有2年了,但是如果有人在将来遇到同样的问题可能会对他们有用.