質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

3回答

2151閲覧

MySQL 自分で設定したIDの数字が別のものになる

Z-TALBO

総合スコア525

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2016/07/20 00:14

編集2016/07/20 00:15

id int(15) not null primary keyで設定して、今IDとして設定しているのは、
年・月・日・会社の車の号車番号・入力した行番号でIDを作成するようにしたのですが、、、
例えば、下記のような形になります。

2016720231 = 2016-7-20 23 1のような作りです。これが最大10行なので
2016720232
2016720233
2016720234
2016720235
2016720236
2016720237
2016720238
2016720239
20167202310
という感じになるのですが、、、、
とりあえずテストでMySQLに直接IDを入れて10個のデータを登録しておこうとしたら、
2016720239までは何の問題もなかったのですが、20167202310を入れようとすると、、、

※phpmyadminの挿入で入れようとしたら
Please enter a value less than or equal to 2147483647
で、データの挿入がそもそもできませんでした。

※SQLを打ってみたら
INSERT INTO test (id) VALUE('20167202310')
データは一応入ったのですが、エラー文の[2147483647]が入ってました。

Q1.これはどういう状況でしょうか?

Q2.どこをいじる、直せば20167202310という数字は入るようになるでしょうか?

※最大10行ですので、20167202311というのは今後出てくることはない想定です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

MySQLのint型は32ビットですので、符号付きの場合は最大値が2147483647になってしまいます。

入れているものが「数値」というより計算しない「ID」のようですので、VARCHARとするほうがいいのではないかと思います。

なお、数値のままでもBIGINTにすれば9223372036854775807まで対応できます。

投稿2016/07/20 00:19

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Z-TALBO

2016/07/20 00:23

回答ありがとうございます。 こういったエラーは初めてでしたので、、、なんだろうと思ってしまいました。 varcharで対応してみようと思います。
guest

0

maisumakunさんの回答の通り、int型の最大値を超えたためです。
int(15)としても15桁持てるわけではありません。
詳しくはこちらをどうぞ。
http://dbinfo.sakura.ne.jp/?contents_id=102

投稿2016/07/20 00:24

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Z-TALBO

2016/07/20 00:26

回答ありがとうございます。 ()内の数字の部分の考えが違っておりました。 参考URL参照させていただきます。
guest

0

おそらく文字数に10文字制限があるのでは?
「20167202310」は上位10桁で切られて「2016720231」で入力され、
すでにあるデータと競合している・・・とか

ちなみに、10月以降は常に桁あふれするので、いまの運用方法は破綻しています
十分な桁数を確保するようにしてください

投稿2016/07/20 00:19

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Z-TALBO

2016/07/20 00:24

回答ありがとうございます。 文字数制限ということですが、、、どこかに、設定があるのでしょうか、、、 特にそういうことはしたことないのですが、、、 いろいろ確認してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問