- 締切済み
ALTER文を使用してプライマリキーのlengthを変更
はじめまして. 1点、ご質問がございます。 mysqlにてテーブルを既に構築しています。 テーブルのプPROMARY KEYの型がVARCHARの255バイトで定義 しています。 その長さを変更したく思いますが、DROP文は使わず、 ALTER文で更新するような方法で、できないものかと模索中です。 ご存知の方がいらっしゃいましたら、お知恵をお貸し願えないでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
MySQLのバージョンはいくつでしょう? 私の知る限りvarcharの上限は255文字なのですが 最新のバージョンでは1024文字までいけるのですか?
- yambejp
- ベストアンサー率51% (3827/7415)
例えば`テーブル`の`プライマリフィールド`のVARCHARを100に変えるなら 以下のようなかんじ。 ALTER TABLE `テーブル` CHANGE `プライマリフィールド` `プライマリフィールド` VARCHAR( 100 ) NOT NULL ただし短くすることにより同一のキーができてしまうのであれば つかえません。そういう場合は一度プライマリをはずして、 同じものになる場合の処理をしたのち、再度プライマリ設定を してみてください
補足
質問したものですが、説明に不足点がありましたので、 上記の変更を行う理由を詳細の述べたいと思います。 テーブルのキャラクターコードがUTF-8での場合、 ALTER TABLE テーブル名 MODIFY rss_link VARCHAR(1024)と した場合、 #1071 Specified key was too long; max key length is 999 bytes のエラーが発生します。 PROMARY KEY の lengthが超えてしまっている為、lengthの値を 更新したく思い、 DROP後、再度、PROMARY KEY作成時にlength値を設定する事で 対応はできますが、作り直すのではなく、更新処理で対応しようかと 模索している最中なのです。 ちなみにALTER TABLE `テーブル` CHANGE `プライマリフィールド` `プライマリフィールド` VARCHAR( 100 ) NOT NULL も試してみましたが #1071 のエラーが発生しました。 ※ 100 では なく 1024 で試しました。
お礼
バージョンは5.0.19です.