現在の位置: ホーム> 最新記事一覧> 一般的なpdostatement ::エラーコードエラーコードとそのソリューション。一般的な問題をトラブルシューティングする方法は?

一般的なpdostatement ::エラーコードエラーコードとそのソリューション。一般的な問題をトラブルシューティングする方法は?

gitbox 2025-09-18
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// この部分は、記事の内容とは何の関係もありません,好きなように追加できます PHP コメントまたは初期化コード</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"初期化が完了しました\n"</span></span><span>;
</span><span><span class="hljs-variable">$dummy</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

------------------------------------------------------------

</span><span><span class="hljs-comment"># 1つ般 PDOStatement::errorCode エラーコードとそのソリューション,FAQのトラブルシューティング方法?</span></span><span>

存在する PHP 真ん中,使用 PDO(PHP Data Objects)データベース操作を実行するとき,私たちはしばしば遭遇します `</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` エラーコードを返します。これらのエラーコードとその意味を理解します,迅速な位置決めの問題、開発効率の向上は非常に重要です。この記事では、1つ般的なエラーコードを詳細に紹介します、原因と解決策,トラブルシューティングのアイデアを提供します。

</span><span><span class="hljs-comment">## 1つ、PDOStatement::errorCode 導入</span></span><span>

`</span><span><span class="hljs-title class_">PDOStatement</span></span><span>::</span><span><span class="hljs-variable constant_">errorCode</span></span><span>` 方法返回1つ个 SQLSTATE エラーコード,这是1つ个 </span><span><span class="hljs-number">5</span></span><span> 位的标准化エラーコード,識別に使用されます SQL 执行真ん中的错误情况:

- 最初の2桁は、エラーカテゴリを示します(Class)
- 最後の3桁は、特定のエラーを示します(Subclass)

コール例:

```php
</span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM non_existing_table"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span><span><span class="hljs-variable">$errorCode</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorCode</span></span><span>; </span><span><span class="hljs-comment">// 可能な出力 "42S02"</span></span><span>
</span></span>

2。一般的なエラーコードと理由

以下は、開発でしばしば発生するエラーコードとその考えられる理由です。

1。00000 - エラーなし

SQLの実行が成功し、エラーが発生しないことを示します。これはPDOの通常のリターンです。

2。01000 - 警告メッセージ

通常、以下のような脂肪性の警告に使用されます。

  • 自動データ型変換警告

  • SQLの実行は成功しましたが、警告メッセージがあります

詳細情報は、pdostatement :: errorinfo()を介して取得できます。

3。23000 - 制約違反

典型的なシナリオ:

  • 主キーの挿入を繰り返します

  • 外部のキーの制約は失敗しました

  • 一意のインデックス競合

解決:

  • 挿入されたデータが既に存在するかどうかを確認してください

  • 外部キーに関連付けられたデータが存在することを確認してください

  • 繰り返しの操作を避けるために、ビジネスロジックを調整します

4。42000 - 構文エラーまたはアクセス許可の問題

一般的な理由:

  • SQL構文エラー

  • テーブルまたはフィールド名のスペルミス

  • 現在のデータベースユーザー許可は不十分です

トラブルシューティング方法:

  • 完全なSQLを印刷して、データベース管理ツールで実行します

  • データベースユーザーの許可構成を確認します

  • テーブル名とフィールド名が正しいことを確認する

5。HY000 - 一般的なエラー

これは一般的なエラーコードであり、通常、PDOがエラーの特定の原因を決定できないことを意味します。考えられる理由は次のとおりです。

  • 切断されたデータベース接続

  • 実行タイムアウト

  • ドライバー内部エラー

解決:

  • データベース接続ステータスを確認します

  • タイムアウト構成を追加します

  • 詳細については、データベースログを表示します

6.データベース固有のエラーコード

標準のSQLSTATEエラーコードに加えて、MySQL 23000などの特定のエラーコードを返すデータベースには、MySQLエラー番号1062 (繰り返しキー)も添付されます。この場合、データベースドライバーの元のエラーメッセージは、pdostatement :: errorinfo()の3番目の要素と組み合わせて取得できます。

 <span><span><span class="hljs-variable">$errorInfo</span></span><span> = </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$errorInfo</span></span><span>[</span><span><span class="hljs-number">2</span></span><span>]; </span><span><span class="hljs-comment">// データベースドライバーによって返された詳細なエラー情報を出力します</span></span><span>
</span></span>

3. PDOSTATEMENTエラーをトラブルシューティングするための提案された手順

  1. SQLステートメントの正確性を確認してください<br> SQLを印刷し、データベースクライアントで検証を実行します。

  2. 完全なエラーメッセージを表示<br> ErrorInfo()を使用して詳細情報を取得して、問題の分析に役立ちます。

  3. パラメーターバインディング<br>を確認してください 結合パラメーターのタイプと順序が正しいことを確認してください。

  4. データベース接続ステータス<br>を確認します 接続が誤って切断されている場合、HY000エラーを引き起こす可能性があります。

  5. データベースログ<br>を確認してください データベースログに多くのエラーが記録されています。

4。サンプルコード:キャプチャエラーと出力詳細情報

<span><span><span class="hljs-keyword">try</span></span><span> {
    </span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$pdo</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO users(id, name) VALUES(:id, :name)"</span></span><span>);
    </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>([</span><span><span class="hljs-string">':id'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-string">':name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Alice'</span></span><span>]);
} </span><span><span class="hljs-keyword">catch</span></span><span> (PDOException </span><span><span class="hljs-variable">$e</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error Code: "</span></span><span> . </span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorCode</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">errorInfo</span></span><span>());
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Exception message: "</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>() . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span></span>

上記の方法を使用すると、一般的なpdostatementエラーを迅速に配置して解決できます。

5。概要

  • pdostatement :: errorCodeは、標準のSQLSTATEエラーコードを提供して、エラータイプをすばやく決定するのに役立ちます。

  • errorinfo()は、より詳細なドライバーレイヤー情報を返して、正確なトラブルシューティングを行います。

  • 一般的なエラーには、制約違反、構文エラー、不十分な権限、および一般的なエラーが含まれます。

  • 体系的な調査プロセスは、開発者が短期間で問題を見つけるのに役立ち、開発効率を向上させることができます。

PDOエラーコードとトラブルシューティング方法をマスターすると、データベースの操作がより安全で信頼性が高まり、不適切なエラー処理による異常なプログラムの中断を避けることができます。

 <span></span>