- ベストアンサー
AUTO_INCREMENTをphpMyadminで設定するのはどうしたらいいでしょうか?
AUTO_INCREMENTをphpMyadminで設定するのはどうしたらいいでしょうか? いまいちわかりません。AUTO_INCREMENTの値を保存する項目は、"bango"という名前で利用しようとしています。 更新や削除する際に、この値を利用しようと思っています。 ご教授願います。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
作成時も phpMyAdmin を使っていたのでソースは見ていませんでしたが、 ちょっと試しにやってみるとこんなソースで作成されました。 CREATE TABLE `test`.`tensudb` ( `bid` INT NOT NULL AUTO_INCREMENT , `hiduke1` INT NOT NULL , `hiduke2` INT NOT NULL , `hiduke3` INT NOT NULL , `kijutsu` VARCHAR( 200 ) NOT NULL , PRIMARY KEY ( `bid` ) ) ENGINE = MYISAM NOT NULL は無視するとして、 大きな違いは bid に AUTO_INCREMENT が付いて、 PRIMARY KEY の記述が追加されているようです。
その他の回答 (2)
- dell_OK
- ベストアンサー率13% (776/5747)
エラーは、auto_incrementを設定する項目は1つでなければならず、またそれがキーでなければならない、と言う意味のようです。 私はテーブルを作成する時にすでに auto_increment を設定して使っていたので気づきませんでしたが、作成時なら自動的にその項目が「PRIMARY」としてインデックス定義されるようです。 テーブルの変更で auto_increment を設定するには、まずその項目でインデックスを作成しておく必要があるようです。 インデックスであれば、インデックスの種別が「PRIMARY」でも「UNIQUE」でも「INDEX」でもどれでもいいようです。 作成時に自動で「PRIMARY」が設定される事からすると、ここは「PRIMARY」でインデックスを作成しておいた方がいいかも知れません。 テーブルを変更する画面でその項目の右の方に鍵の絵がついたアイコンがあると思います。 マウスカーソルを合わせると「主」と表示されます。 ここをクリックすれば自動でインデックスを作成してくれます。 成功すれば以下のように表示されると思います。 実行した SQL: ALTER TABLE `tensudb` ADD PRIMARY KEY ( `bid` ) 失敗した場合はすでに主キーが存在した場合などだと思いますので、そちらのキーは削除しておいてから、再度試みてください。 また、主キーにはNULLが許可されないようですので、NULLやデフォルト値の設定も自動で変更されます。 それから auto_increment の設定をしてみてください。 以下のように表示されて成功すると思います。 実行した SQL: ALTER TABLE `tensudb` CHANGE `bid` `bid` INT( 11 ) NOT NULL AUTO_INCREMENT もしそれでも失敗したらまた補足投稿してください。
お礼
ありがとうございました。無事に動きました。 ちなみに >私はテーブルを作成する時にすでに auto_increment を設定して使っていたので とありますが、テーブル作成のソース段階だとどういう指示になりますでしょうか。ちなみに私の場合は下記になるのですが・・・bidをオートインクリメントにしたい場合のソースを教えてください。 $sql = "CREATE TABLE tensudb ( bid int , hiduke1 int , hiduke2 int , hiduke3 int , kijutsu varchar(200) ) engine=MyISAM;";
- dell_OK
- ベストアンサー率13% (776/5747)
テーブルの項目 bango を auto_increment に設定する方法でよろしいのでしょうか。 テーブルを作成する時に「フィールド」「種別」「長さ」と言った設定項目がありますが、この中に「その他」と言うのがあってプルダウンリストで「auto_increment」が選択できます。 テーブルの項目変更でも「その他」のところで変更できますので、すでにテーブルを作成済みでしたら、変更してください。 「種別」のところは「INT」などの数値型にしてください。 どの数値型を使うのかは必要な桁数(データ件数)を考慮して選択してください。
補足
ありがとうございます。 ご指示の通りにやったのですが、下記の表示が出てしまいます。 ---------------------------------------------------------------- エラー 実行した SQL: ALTER TABLE `tensudb` CHANGE `bid` `bid` INT( 11 ) NULL AUTO_INCREMENT MySQLのメッセージ: #1075 - Incorrect table definition; There can only be one auto column and it must be defined as a key ---------------------------------------------------------------- また、テーブルの状況は以下になります。 フィールド:bid 種別:int 属性:(空白) ヌル:null デフォルト値2:NULL その他:AUTO_INCREMENT 上記で設定してますが、うまくいきません。ご教授願います。
補足
ありがとうございました。 うまくいきました。助かりました。 今後もお願いします。