個別のテーブル項目
変更は不可能! 指定できるのはテーブル作成時のみ!!
http://dev.mysql.com/doc/refman/4.1/ja/charset-column.html
残念だが、新しいテーブルを作って、レコードをコピーするしかない!
テーブルの項目(カラム)の照合順序を変更したいのですね?
新しく追加するデータで反映されれば良いのでしたら、phpMyAdminから簡単に変更できます。
※既に挿入されているデータは文字化けします。
1.phpMyAdminにログインして目的のデータベースのテーブルを表示します。
2.「構造」タブをクリック
3.目的のカラムの変更アイコン(鉛筆の絵)をクリック
4.「照合順序」で「ujis_japanese_ci」を選択
5.「保存する」ボタンをクリック
※phpMyAdminのバージョンによってメニューの遷移順が違う可能性があります。
SQL文で実行するには以下のように実行します。
LTER TABLE テーブル名 MODIFY カラム名 カラムのタイプ CHARACTER SET ujis;
http://dev.mysql.com/doc/refman/5.1/ja/charset-conversion.html
文字化けさせずに照合順序を変更したい場合は、ダンプデータを出力してから戻すしかないと思います。
方法は、以下のフォーラムの記事を参考にしてください。
http://www.xugj.org/modules/QandA/index.php?topic_id=1472
具体的には、ターミナル(winの場合はコマンドプロンプト)から、コマンド操作で以下を実行してバックアップします。
mysqldump --user=ユーザー名 --password=パスワード --default-character-set=latin1 データベース名 > 保存するファイルパス+ファイル名.sql
次に、出力したファイル中の「latin1」を「ujis」に変更します。
※出力されるファイルはUTF-8だった場合は、文字化けしていない事を確認してから、文字コードをEUCに変更して保存し直してください。
(ファイルの文字コードをUTF-8のままでリストアを実行する場合は、「SET NAMES utf8」とすれば大丈夫かもしれません。※いづれの場合も、カラムのデータ挿入部分の「CHARSET=latin1」は「CHARSET=ujis」にします。)
※テーブルにデータを挿入した方法によっては、上記の方法でも文字化けしたデータしか出力されない場合もあります。
MySQLのバージョンを、明記するようにしてください。
MySQL 5.1なら、ALTER TABLEのCHANGE句を使って、列の定義変更が可能です。今回のように列名は同じで、データ型などを変更する場合は、同じ列名を指定することになります。
alter table t1 change c3 c3 varchar(10) character set ujis collate ujis_japanese_ci
コメント(3件)
http://mirrors.dotsrc.org/mysql/doc/refman/5.1/ja/charset-column.html
次のように1行で実行してください。
mysqldump --user=ユーザー名 --password=パスワード --default-character-set=latin1 データベース名 > 保存するファイルパス+ファイル名.sql
※出力されたファイルの文字コードがSJISだった場合も、同じように文字化けしていないことを確認してから、文字コードの変換と記述の修正を行ってデータベースにインポートしてください。
サーバーのphpMyAdminからSQL形式でエクスポートしたファイルを、ローカルのMySQLにphpMyAdminでインポートしてから回答の操作を実行します。
※エクスポートしたファイルは「ãªãœã‹æ–‡å」のように文字化けしているはずですが、そのまま戻してサーバー側と同じ状態にします。(データベースの各テーブルも「latin1」にしておきます。)
※こちらでは、MySQLのバージョン5.0.xと5.1.x間では問題なく実行できました。
この方法を実行する場合は、サーバー側となるべくバージョンが近い環境を構築して試してみてください。