ようこそ! Geeklog Japan 2019/01/18 12:21 JST


 2014/12/08 23:53 JST (参照数 4190回)  

状態: オフライン

Koji

Forum User

Newbie
登録日: 12/08/14
投稿数: 3
ロリポップでGeeklogを動かしているCMS初心者です。

ロリポップでMySQL4からMySQL5へ年内に移行する必要があり、移行前にロリポップの提供するDBコピー機能でテストしたところ、サイトのコンテンツが全体的に????という形に文字化けしてしまいました。config.phpの文字コードをUTF-8にしており、ヘッダーのメニューや編集リンクなどは正常に表示されております。

MySQL4のDBのPHPMyAdminにロリポップ経由でログインし、接続照合順序をご指定の「MySQL 接続照会順序: utf8_general_ci」にしたいのですが特権ID(root)のパスワードはロリポップユーザーとしては把握できず、接続照合順序を変更することができません。

Geeklogのバージョンも古いため、今後アップグレードも考えておりますが、以下のサイトでご指定のステップの最初で、接続照合順序の変更が必要とあるため、アップグレードもままならない状況で非常に困っております。

http://wiki.geeklog.jp/index.php?title=%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89%E6%96%B9%E6%B3%95

大変初歩的な質問で恐縮ですが、上記のような状況を打開されたご経験のある方がいたら、ぜひご教示いただければ幸いです。

 2014/12/09 00:24 JST  

状態: オフライン

Ivy

Site Admin

管理者
登録日: 01/01/04
投稿数: 5855
場所:Tokyo
EUCサイトからUTF-8サイトへの移行は通常は問題なく移行していますので、順をおって作業すれば大丈夫ですよ。

まず、phpMyAdminで、SQLを書き出してください。
そして、そのEUCエンコードのファイルを秀丸など、テキストエディターで開いて、utf-8のエンコードで保存してください。

さらに、そのファイルを開き、文字列「euc」 を検索してみてください。

ENGINE=MyISAM DEFAULT CHARSET=euc;

というようなところをすべて

ENGINE=MyISAM DEFAULT CHARSET=utf8;

に変更して、保存すれば完了です。

これをあたらしいMySQL5のDBにインポートしてみてください。

なお、照合順序は、utf8_general_ciが最適ですが、utf8_unicode_ciだと、①②③(○付数字)といった特殊な文字だけが文字化けして? になるだけで、通常のテキストは文字化けしません。なので照合順序に関しては、変更できなければごく一部の文字化けについてはあきらめて、手作業にて、sqlを編集して①などを(1)などに置換してsqlをインポートするなど、工夫してみてください。


 2014/12/09 01:42 JST  

状態: オフライン

Koji

Forum User

Newbie
登録日: 12/08/14
投稿数: 3
早速コメントを頂き誠にありがとうございます。

phpMyAdminでエクスポートし、秀丸で開いてみたところ、EUCは存在せず、すべてUTF-8になっているようでした。phpMyAdminの照合順序ではなく、言語 - Language という項目(非特権IDですが変更可能でした)をUTF-8にしたためかもしれません。

Webサイト構築(MySQL含む)については、初心者のため、エクスポートしたファイルをインポートする際にエラー表示が出て、お手上げになってしまいました。(基本からしっかり勉強する時間が取れればよいのですが、現在、そのための時間がとれず、年末の移行期限が迫っている状況です)

何とか打開策がないかと思っておりますが、ページ数とコンテンツ数がそれほど多くはないため、最終的にはテキスト情報をコピペ&過去データの一部の移行をあきらめ削除、しかないかもしれない・・・と思っております。ロリポップの問い合わせ窓口から、phpMyAdminの接続照合順序変更のために、特権IDのパスワードを教えてもらうことが可能か問い合わせております。

同様の環境(ロリポップ上のGeeklogにおけるMySQLの4→5)で同じ課題に対処された方がいましたら、コメントいただけると大変たすかります。

 2014/12/09 02:34 JST  

状態: オフライン

Ivy

Site Admin

管理者
登録日: 01/01/04
投稿数: 5855
場所:Tokyo
phpMyAdminのバージョンが古すぎて正しく書き出してくれない、という場合には、
書き出しモードを、1行ごとにおこなうモード、

すべての INSERT 文にカラム名を含める
例: INSERT INTO tbl_name (col_A,col_B,col_C) VALUES (1,2,3)

とすると、どこでエクスポートが失敗したか突き止めやすいです。

コンテンツのなかに、’ があるときは ¥’ (自動的に バックスラッシュでエスケープ処理)としてくれないと、文法エラーになるのに、¥が
無い というエラーは、バージョンによりますが、発生します。

phpMyAdminでDBのインポートが失敗する というのはエクスポートで失敗していたからであり、Geeklogの問題というより、phpMyAdminの問題かと。

 2014/12/09 02:46 JST  

状態: オフライン

Koji

Forum User

Newbie
登録日: 12/08/14
投稿数: 3
早速のコメント、ありがとうございます。いただいたアドバイスをもとに、もう少し試行錯誤してみますね。

時刻はすべて JST , 現在の時刻は 12:21 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  • ゲストユーザの投稿を見る 
  • ゲストユーザ投稿可能 
  • 一部のHTMLを許可 
  • バッドワードをチェック