プロフィール

島田圭二

Author:島田圭二
Follow shimanp on Twitter

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
読断と変見内検索
訪問ありがとうございます
最近のコメント
最近のトラックバック
関連リンク
カテゴリー
月別アーカイブ


スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


スポンサー広告 | 【--------(--) --:--:--】 | Trackback(-) | Comments(-)
MySQLの設定に一週間費やした件
正直、ぶちぎれ半歩手前まできていた。
MySQLの設定がうまくいかなかったのだ。

何がうまくいかなかったのかというと、テーブルに日本語データを追加することができないのだ。
今週の月曜日から金曜まで会社から帰って毎日3時間くらい悩み、今日も朝からずっとやってた。
お出かけ日和のいい天気だっていうのに。。。

ネットで調べまくっても、本屋で立ち読みしてもなかなか、解決することができなかった。。。
が!ついに先ほどすべての謎が解けた!真実はいつもひとつ!

結論からいうと、テーブルを作成したときのCHARSETとデータを追加しようとしたときの
CHARSETが異なっていたからだ!

なぜこうなったかというと、まずMySQLをインストールしたときの文字コードの設定を
デフォルトのままにしていた。デフォルトだとlatin1という文字コードになる。
で、この状態でテーブルを作成し、日本語のデータを追加した。
実はこのときは、正常に日本語のデータを追加することができた。
しかし、PHPからデータを取得して表示してみると化けまくった。
なぜなら、UTF8に変換して表示していたからだ。
あっと思って、Mysqlのホームにあるmy.iniを修正して、latin1を全部UTF8に変えた。
でこれでいけるだろうと思って、データを削除して追加しなおそうとしたら、

「ERROR 1366 (HY000): Incorrect string value:・・・・・」というエラーが出て一向に入れることができない。。。

で一週間悩んだ末に、テーブルを作成したときのcharsetとデータを追加しようとしたときの
charsetが異なることに気づいたわけだ。
なのでテーブルを削除して、作成しなおしたら、無事うまくいった。

ちなみに、テーブルのcharsetを確認するSQLは
show create table [テーブル名];

これのcharsetと以下のSQLでみれるclientのcharsetが同じなら追加できる。。はず。
show variables like 'char%';

あと今回の件で、わかったのが、mysqlはコマンドプロンプトから表示すると日本語が
文字化けしてしまうということ。
どうやら、windowsのコマンドプロンプトはSJISしか対応しておらず文字化けするようだ。
なのでMysqlを操作するにはMysqlAdministratorなどのツールを使用したほうがいいらしい。
スポンサーサイト


mysql | 【2008-03-01(Sat) 17:54:29】 | Trackback:(0) | Comments:(4)
コメント

文字コードをsjisからutf8に変更する際、同じところで躓いていたのですが、このエントリを見て無事に解決することができました。
ありがとうございました。
2010-04-22 木 16:33:48 | URL | KAZUHIRO Kobayashi #otkldVFE [ 編集]
お役に立てて、よかったです。
自分の経験が人の役にたつのはうれしいですね。
2010-04-23 金 23:57:52 | URL | 島田 #- [ 編集]
このコメントは管理者の承認待ちです
2013-04-20 土 23:29:54 | | # [ 編集]
このコメントは管理者の承認待ちです
2013-05-26 日 14:37:13 | | # [ 編集]
コメントの投稿
管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。