27.7.6.72 mysql_sqlstate()

const char *mysql_sqlstate(MYSQL *mysql)

Description

返回以空值结尾的字符串,其中包含最近执行的 SQL 语句的 SQLSTATE 错误代码。错误代码由五个字符组成。 '00000'table 示“没有错误”。这些值由 ANSI SQL 和 ODBC 指定。有关可能值的列 table,请参见附录 B,错误消息和常见问题

mysql_sqlstate()返回的 SQLSTATE 值与mysql_errno()返回的 MySQL 特定错误号不同。例如,mysqlClient 端程序使用以下格式显示错误,其中1146mysql_errno()值,而'42S02'是对应的mysql_sqlstate()值:

shell> SELECT * FROM no_such_table;
ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist

并非所有的 MySQL 错误号都 Map 到 SQLSTATE 错误代码。值'HY000'(一般错误)用于未 Map 的错误号。

如果在mysql_real_connect()失败后调用mysql_sqlstate(),则mysql_sqlstate()可能不会返回有用的值。例如,如果主机被服务器阻止并且连接被关闭而没有任何 SQLSTATE 值发送到 Client 端,则会发生这种情况。

Return Values

一个空终止的字符串,其中包含 SQLSTATE 错误代码。

See Also

参见第 27.7.6.14 节“ mysql_errno()”第 27.7.6.15 节,“ mysql_error()”第 27.7.10.27 节,“ mysql_stmt_sqlstate()”