Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@a-nishimura

MySQLのintの最大値を超えた場合の挙動はどうなるか?

More than 1 year has passed since last update.

MySQLのintの最大値はunsignedでない場合「2147483647」ですが
Unixtimestampを使用しているとこの数値は
2038-01-19 3:14:07 になります。
これが俗に言う2038年問題ですね。(あと20年後か…)

ちなみにこの数値を越えるとMySQL的にはどうなるのかな?と思ったので試してみました。

「int_test」の定義がint(11)にしてあります。

mysql> select * from user_int_test limit 1;
+----+---------+------------+
| id | user_id | int_test | 
+----+---------+------------+
| 1  |    10   | 0 | 
+----+---------+------------+
mysql> update user_int_test set int_test = 2147483647 where user_id =10;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select * from user_int_test limit 1;
+----+---------+------------+
| id | user_id | int_test | 
+----+---------+------------+
| 1  |    10   | 2147483647 | 
+----+---------+------------+

最大値は問題なく入りますね。
次は閾値を1だけ超えた「2147483648」で試してみます。

mysql> update user_int_test set int_test = 2147483648 where user_id =10;
Query OK, 0 rows affected, 1 warning (0.00 sec)

クエリ的にはエラーになることもなく正常に完了しました。
値は、、

mysql> select * from user_int_test limit 1;
+----+---------+------------+
| id | user_id | int_test | 
+----+---------+------------+
| 1  |    10   | 2147483647 | 
+----+---------+------------+

変わっていない!

ということでmysql側に自動で切り捨てられるようですね。
エラーになるべきではと言う考え方もあるかもしれませんが
その都度状況によって変わると思います。

余談ですが、私がずっと続けているパズドラは攻撃力が最近とくにインフレを起こしてきていますがデータ型は何で定義してあるのでしょうね。

ゲームやユーザの規模が桁違いのシステムなどはデータ型のMAX値についても特に意識して実装いきたいですね。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
a-nishimura
フリーランスプログラマ。主にweb系のソフトウェアエンジニアです。日々の学びや気づきなどブログ書いてます。フットサル、筋トレ、日向坂46、YouTubeが好きです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?