首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >仅从错误代码获取MySQL错误消息

仅从错误代码获取MySQL错误消息
EN

Stack Overflow用户
提问于 2016-03-14 01:57:42
回答 2查看 1.6K关注 0票数 1

MySQL错误代码(如1054)的意义是什么?

错误消息包含实际信息,因此必须有某种方法从错误代码中获取更多信息。

但是,与错误消息相比,我可以使用什么来单独从错误代码中获取任何东西呢?

通常情况下,您可以使用以下命令同时获得这两个功能:

代码语言:javascript
复制
<?PHP
$db_link = new mysqli($hostname, $username, $password, $database);

$statement = $db_link->prepare('SELECT SomeFieldThatDoesNotExist FROM Person');
$statement->execute();

if(!$statement) {
    $specific_error = $db_link->error;
    $error_number = $db_link->errno;
}
?>

假设我有错误1054 (参见:https://dev.mysql.com/doc/refman/5.5/en/error-messages-server.html#error_er_bad_field_error)。

使用数字1054,我可以使用什么来获取实际的MySQL错误消息本身?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-13 07:47:17

在Github:https://github.com/HoldOffHunger/mysql-errors-codes上使用MySQL错误代码PHP lib。

正常错误消息样式:

代码语言:javascript
复制
$db_link = new mysqli($this->hostname,$this->username,$this->password);
print($db_link->connect_errno . " : " . $db_link->connect_error);

正常错误消息输出:

代码语言:javascript
复制
13236 : Message: Newly created data directory SOMEDIRECTORY is unusable. You can safely remove it.

新的、更完整的错误消息传递风格:

代码语言:javascript
复制
$mysql_error = new MySQLErrorCode();
$error_codes = $mysql_error->ErrorCodes();

print_r($error_codes[13236]);

输出:

代码语言:javascript
复制
13236 : Message: Newly created data directory SOMEDIRECTORY is unusable. You can safely remove it.

'13236' => [
    'error_code' => '13236',
    'internal_code' => 'ER_DATA_DIRECTORY_UNUSABLE',
    'message_template' => 'Message: Newly created data directory %s is unusable. You can safely remove it.',
    'sql_state' => 'HY000',
    'version_information' => 'ER_DATA_DIRECTORY_UNUSABLE was added in 8.0.13.'
],
票数 1
EN

Stack Overflow用户

发布于 2016-03-14 03:22:45

使用SHOW ERRORS;

手册:https://mariadb.com/kb/en/mariadb/show-errors/

代码语言:javascript
复制
SELECT f();
ERROR 1305 (42000): FUNCTION f does not exist

SHOW COUNT(*) ERRORS;
+-----------------------+
| @@session.error_count |
+-----------------------+
|                     1 |
+-----------------------+

SHOW ERRORS;
+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Error | 1305 | FUNCTION f does not exist |
+-------+------+---------------------------+
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35973718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档