勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

MySQLで「Uncaught mysqli_sql_exception: BIGINT ~~」エラーの対応方法

  MySQL データベース

MySQLにて「Uncaught mysqli_sql_exception: BIGINT UNSIGNED value is out of range」というエラーが発生した。以下に原因をメモ。

 

原因

MySQLでUNSIGNED設定しているカラムを負の数にしようとしたためエラーとなった。以下テーブル構造、テーブル内容、実行しようとしたSQL文になる。

 

テーブル構造

mysql> SHOW COLUMNS FROM `test_table`;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| count | int unsigned | NO   |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+

 

データ内容

mysql> TABLE `test_table`;
+----+-------+
| id | count |
+----+-------+
|  1 |     0 |
+----+-------+

 

実行しようとしたSQL文

UPDATE `test_table` 
SET `count` = `count` - 1
WHERE `id` = 1;

countカラムをデクリメントしようとしたところ負の数になりエラーが発生した。ちなみにUNSIGNED設定していない場合、エラーは発生せずcountカラムは「-1」になる。

 

対応方法

UNSIGNED設定しないようにするか、もしくは先にデータを取得しておき負の数になる場合はupdateしないようにする。

 - MySQL データベース

  関連記事

MySQLでサイズの大きいファイルをインポートする際の注意点

MySQLでサイズの大きい(3GBほどの)dumpファイルを異なるサーバに移行し ...

MySQLにてdatetime型のカラムを整形し「年月日のみ形式」または「秒のみ省いた形式」で表示する方法

MySQLにてdatetime型のカラムに登録日時等を格納しており、管理画面側で ...

MySQLでLIKE検索時に大文字・小文字・半角・全角全て区別したい

以前にMySQLであいまい検索時に大文字小文字は区別しないが、それ以外は全て区別 ...

MySQLのTEMPORARY TABLE(テンポラリテーブル)で高速化を図る方法

MySQLで5000万件ぐらいデータが入っているテーブルから日本語検索しないとい ...

MySQLで「Incorrect integer value: '' for column」エラーの対応方法

MySQLで「Incorrect integer value: '' for c ...