由mysqli_errno()返回的MySQL错误代码是否一致?

问题描述 投票:-2回答:2

我想知道mysqli_errno()返回的MySQL错误代码是否一致,或者换句话说,它们在下一版MySQL中是否可以更改?

我正在做这样的事情:

mysqli_errno()
php mysql error-code
2个回答
0
投票

我想某些情况下的错误代码可能会更改。但这不太可能,而且我敢肯定,MySQL有动力避免破坏每个人的代码。

如果您想确定,至少有两种简单的方法可以做到这一点:

  1. 阅读文档!参考页中列出了每个MySQL版本的错误代码。您可以通过更改右上角的选择器来选择正在阅读的文档版本。

    $errNo = mysqli_errno($link); if($errNo == 1146) { //Table doesn't exist }

  2. 经验测试!尝试在MySQL客户端中进行操作,并查看输出了哪些错误代码。在您担心任何升级之前,请执行此操作。

    https://dev.mysql.com/doc/refman/8.0/en/server-error-reference.html

    然后测试另一个版本:

    mysql> select * from table_that_does_not_exist;
    ERROR 1146 (42S02): Table 'test.table_that_does_not_exist' doesn't exist
    
    mysql> select version();
    +---------------+
    | version()     |
    +---------------+
    | 5.7.27-30-log |
    +---------------+
    

0
投票

我不希望这些代码会改变,因为毫无疑问,那里确实有数量未知的代码确实使用了像mysql> select * from table_that_does_not_exist; ERROR 1146 (42S02): Table 'test.table_that_does_not_exist' doesn't exist mysql> select version(); +-----------+ | version() | +-----------+ | 8.0.17-8 | +-----------+ 这样的硬编码常量。但是you应该使用常量。 (例如,请参见:43。)具有MySQL接口的每种编程语言也都提供常量。

然而,请注意,随着时间的流逝,由于底层MySQL系统的工作方式发生了一些变化,某些错误代码的确变得过时。请考虑上述网站上的以下引用:

注意,某些常量在更高版本的MySQL中已重命名,因为它们已过时。 (以防您怀疑:这里的名称与MySQL在源代码中使用的符号匹配。)为避免破坏代码,在此程序包中未更改过时的名称,但是您不应再在应用程序中使用它们。

很明显,如果您已按需使用了常量,则可以更轻松地在代码中查找这些位置。您应该始终查看MySQL的每个新版本(或代码所依赖的任何其他系统,包括语言本身)中的发行说明。有时会宣布功能已被弃用,并且您有责任使应用程序保持最新。

© www.soinside.com 2019 - 2024. All rights reserved.