phpmyadminの自動インクリメント


94

PHP、MySQL、phpMyAdminを使用する既存のデータベースがあります。

ユーザーが私のWebサイトのメンバーになると、5桁の番号を使用してユーザーに一意のメンバーシップ番号を作成するシステムが必要になります。たとえば83773です。メンバーの番号だけが必要なことを除いて、ランダムなパスワードを生成するようなものです。このID番号は、メンバーごとに一意である必要があります。

ユーザーテーブルで主キーをauto_incrementに設定し、10000から開始し、メンバーが登録するたびに自動インクリメントするように設定することは可能ですか?

また、主キーID番号が上がる最大数はありますか?

これは、主キーID番号をメンバーシップ番号として使用するための信頼できる安全な方法ですか?


3
以下の人々の一部は、主キーに上限はないと回答しましたが、上限は選択したデータ型の最大サイズであると想定します...多分私は間違っているかもしれませんが、そうではありません4294967295の最大値に制限されていますか?dev.mysql.com/doc/refman/5.0/en/numeric-types.html
Sam

承認された回答をピックアップしてください。これは1つのstackoverflow.com/a/18942684/248616です
Nam G VU

回答:


201

列の自動インクリメントを有効にするための可能なステップがあります。phpMyAdminのバージョンは3.5.5だと思いますが、よくわかりません。

[ テーブル ]> [ 構造 ]タブを クリックし、[ アクション ]で[プライマリ(プライマリとして設定)をクリック]をクリックし、ポップアップウィンドウで[ 変更 ]をクリックし、左にスクロールして、A_Iを確認します。また、[ デフォルト]で[ なし]を選択していることを確認してくださいここに画像の説明を入力してください


5
[操作]タブからauto-inc機能が削除されたため、これが現在実装されているようです。ありがとう、@ AmitKB。
マイクS.

2
しかし、私はこのエラー得たことをしようとしたとき: Query error: #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
YaakovのAinspan

メッセージは明確です。複数の自動列を設定しようとしている可能性があります。
Amit Bhagat、2016

1
同様の問題があり、これで私の問題が修正されました
Callat

1
うわー、とてもシンプル。なぜ誰もこれについて言及しなかったのですか?このような答えを見つけるのにとても時間がかかりました。断然最良の答えです。
oldboy '15

52

phpMyAdminで問題のテーブルに移動し、[操作]タブをクリックします。左側の[テーブルオプション]の下で、現在のAUTO_INCREMENT値を設定できます。


5
これを行うとき、auto_incrementの追加に関する2つのオプションは、「テーブルの移動先」または「テーブルのコピー先」です。テーブルを移動またはコピーするのではなく、単にauto_incrementを追加します。何が起こっている??MySQL v5.6を使用しています。
oldboy '15

@oldboy私はあなたと同じです。おそらく彼らは新しいバージョンのXAMPP PhpMyAdminの機能を削除したでしょう
kevind

21

単純なMySQLクエリを実行して、自動インクリメント番号を任意に設定します。

ALTER TABLE `table_name` AUTO_INCREMENT=10000

最大数に関しては、私が認識している限り、1つはなく、そのような数を制限する方法もありません。

完全に安全で、ID番号をプライマリキーとして設定し、自動インクリメントintにするのが一般的な方法です。PHPを使用して特定の形式でメンバーシップ番号を生成し、挿入する前にその番号が存在しないことを確認するなどの代替手段がありますが、個人的にはプライマリidのauto_inc値を使用します。


10
  1. テーブルの「構造」タブ
  2. 必要な変数の鉛筆をクリックしますauto_increment
  3. 「追加」タブで「auto_increment」を選択します
  4. 次に、テーブルの「操作」タブに移動します
  5. [テーブルオプション]-> auto_incrementタイプ-> 10000

2

phpMyAdminで、テーブルのフィールドを自動インクリメントに設定し、行を挿入してそのフィールドの値を10000に設定すると、そこから続行されます。


2

@AmitKB、あなたの手順は正しいです。このエラーが

クエリエラー:#1075-テーブル定義が正しくありません。自動列は1つしか存在できず、キーとして定義する必要があります

最初にフィールドをキーとしてマークすることで解決できます(ラベルプライマリのキーアイコンを使用)。他のキーがない限り、機能しない可能性があります。


私がphpMyAdminで遊んだので、長い間使用方法を忘れていました。この二次的な問題の修正に感謝します。それは私のために働いた。
rncrtr

0

最大値を設定することはできません(大きな数を保持できないデータ型を選択する以外は、必要な制限があるものはありません)。挿入後にLAST_INSERT_ID()を使用してそれを確認し、新しく作成されたメンバーのIDを取得できます。IDが大きすぎる場合は、アプリケーションコードで処理してください(メンバーを削除して拒否するなど)。

なぜ上限が必要なのですか?


0

これは、に起因してwp_termswp_termmetaそしてwp_term_taxonomyにそれらのすべてのIDの設定していなかった、テーブル、AUTO_INCREMENT

これを行うには、phpmyadminに移動し、懸念データベース、wp_termsテーブル、構造タブをクリックします。右側に、という名前のタブが表示されますA_I(AUTO_INCREMENT)ので、チェックして保存します(これは、最初のオプションに対してのみ実行していwp_termます。のためだけにそれを行うterm_id)。

同じことをする wp_termmetaと、wp_term_taxonomyその問題を修正します。


OPがWordPressを使用していると思いますが、どこでその情報を見つけましたか?質問にWPへの言及はありません。
Raul Sauco

0

(a)データベースをクリックするだけで、テーブルを選択します。「操作」をクリックします。[テーブルオプション]セクションで、AUTO_INCREMENTの値を目的の値に変更します。この場合は、10000をクリックして[移動]をクリックします。(添付画像参照)

(b)または、テーブルを選択した後、[SQL]タブでSQLコマンドを実行できます。「ALTER TABLE table_name AUTO_INCREMENT = 10000;」と入力するだけです。次に[Go]をクリックします。それでおしまい!! 自動インクリメント値の設定image(a)

自動インクリメント値の設定image(B)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.