MySQLで「Uncaught mysqli_sql_exception: BIGINT ~~」エラーの対応方法
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でサイズの大きい(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 ...