- ベストアンサー
phpMyAdmin: 256件目以降のデータを受け付けなくなりました
HTMLに関しては素人以上の知識がありますが、プログラム言語やセキュリティに関しては全くの素人です。 必要はあれどコストをかけられないため、phpを少し勉強してプログラムを作り、phpMyAdminを使ってシステムを構築することまではなんとか自力でできました。 (過去の質問:QNo.3671803、QNo.3733044) その後特に大きな問題もなくそのシステムを使用していましたが、データが256件目にきたところでそれ以上受け付けなくなってしまいました。 (255件目のデータが重複している、というエラーが出ます) 255という数字からもう満杯なんだということは何となくわかるのですが、そのように設定したつもりはないですし、対処方法がわからず困っています。 PhpMyAdminの「操作」でauto_incrementが255となっているのを256に変更しても受け付けてもらえません。 そのシステムの使用を急に停止することができないので、 とりあえず255までを別のテーブルとして複製し、元のテーブルを空にして 現在はまたそこに1からデータを格納して使用を継続しているのですが、 これを256以降も受け付けるようにするにはどうすればいいのでしょうか。 もしくはどこかで256以上受け付けない制限をかけてしまっているのでしょうか。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こういった質問をする場合、次のような情報を正確に教えてもらえないと、適切なアドバイスができません。 (1)使用している表やインデクスの定義 SQLを入力できる状態で、「SHOW CREATE TABLE 表名」といった文を入力することで表示可能 (2)実際に実行したSQL (3)MySQLから返されたエラーメッセージ phpMyAdminでも表示されたと思うし、phpでアプリを組んだ場合は、エラーメッセージを拾えるはず。 >項目はデータ番号、氏名、会員番号、有効期限などでデータ番号がPRIMARYキーです。 データ番号って、データ型が TINYINT UNSIGNED だったりしますか? もしそうなら、1バイトの2進数ですから、符号なしの場合、0~255の値しか格納できません。256以上の値を格納しようとすると、MySQLからは「out of range(範囲外)」といったエラーが返されます。 もしそうなら、INTやBIGINTにすれば、格納できる値の範囲は大幅に拡がります。
その他の回答 (2)
- masa6272
- ベストアンサー率66% (93/140)
テーブル定義どうなってます? show create table テーブル名; の結果見せてもらえません?
補足
ありがとうございます。 No.3の方のところに補足しています。
- chukenkenkou
- ベストアンサー率43% (833/1926)
>データが256件目にきたところでそれ以上受け付けなくなってしまいました。 >(255件目のデータが重複している、というエラーが出ます) 誰が出しているどういう内容のエラーか、正確に示してもらえませんか? 255件目で重複なら、255件目の操作ではないのでしょうか? >255という数字からもう満杯なんだということは何となくわかるのです 満杯と重複エラーは、違うと思いますけど? MySQLの表&インデクスの定義は、どういう内容なのでしょうか?
補足
補足要求ありがとうございます。言葉足らずですみません。 サイトのPHPフォームページに情報を入力して送信すると管理者の私にメールが送信され、同時にデータがphpMyAdminに格納されます。 エラーの内容は「The server is experiencing technical difficulties. The problem is likely to be resolved within a few hours. Please try again later or contact xxxxx directly.」といったもので、PHPプログラム内では「//DBの接続に失敗した場合」にこのエラーメッセージを出すよう指示されていますが、複製して空にしたDBには問題なく接続できています。出るのは情報送信ボタンを押下した後です。255番目のデータがすでに存在しているのに、256番目のデータも255番目に書き込もうとするようなのです。データに累計番号を振っていて、その重複を許可していないので、エラーが出るようです。操作は至ってシンプルなものですので、255件目の操作だけがこれまでと違うということは考えにくいと思います。何度も試みたところ、メールはその都度データが正常に送信されたかのように送られてくるのですがphpMyAdminを開いてみると、256番目のデータは格納されていない、という状況です。ごめんなさい、「MySQLの表&インデクスの定義」というのはフィールドの項目とインデックスに何を指定しているか、ということでしょうか?項目はデータ番号、氏名、会員番号、有効期限などでデータ番号がPRIMARYキーです。うまく説明できず恐縮ですがよろしくお願いいたします。
お礼
ありがとうございます。 回答をいただくのに必要な情報すら理解しておらず、お手数をおかけしてすみません。 アドバイスいただいた「TINYINT UNSIGNED」がまさにそうでした...。 データ番号の種別のところをSMALLINTに変更したところ、(32,767もあれば十分だったので) 256番目、257番目のデータが格納されるようになりました。 ちなみに、MySQLから表示されたエラーは「Duplicate entry '255' for key 1」といったものでした。 Chukenkenkou様、masa6272様、ほんとうにありがとうございました。