2010年04月24日

さくらレンタルサーバのMySQL環境をデータも含めてUTF8に

一回何の気なしにテーブル移行したら日本語ujisでできちゃったみたいなんすよね。何でだか知らんけど。phpAdminのトップページのアレは「utf8_general_ci」にしてたんだけどね。

んなわけで環境全部UTF8にして、中のデータもUTF8で入れなおそうかと。

(1)DB環境(?)をUTF8に
新規作成時のテーブルに影響すんのかね?知らないけど。
MySQLにログインして、自分のデータベースにCONNECTしてからね。

−−−−−−−−−−−−−−−−−−−−
mysql> show variables like 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql> alter database character set utf8;
Query OK, 1 row affected (0.01 sec)

mysql> show variables like 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

mysql>
−−−−−−−−−−−−−−−−−−−−
なんかUTF8になった気がする。


(2)今のデータのexport
さくらレンタルサーバのphpAdminのエクスポートタブからこんな感じで。
ユーザテーブル全部作り直しなので、左上のユーザテーブル選択して、DROP DATABASEを追加のオプションも選択してから実行。
−−−−−−−−−−−−−−−−−−−−
20100423.jpg
−−−−−−−−−−−−−−−−−−−−
テキストが出現するのでそれを全コピして、メモ帳にペースト。


(3)編集してSQL作成
そのテキストに対して「DEFAULT CHARSET=ujis」となってる部分を「DEFAULT CHARSET=utf8」に全部置換をかける。
そのできたテキストをサーバ側に拡張子sqlのファイル名でUPLOADする。たいしたことないサイズならviで開いて無理くりコピペ楽チン。
※以下例ではここでa.sqlを作ったと仮定。


(4)クライアントをUTF8に切り替えてからimport

クライアント環境をUTF8に切り替える。importに必要かは知らん。
−−−−−−−−−−−−−−−−−−−−
mysql> status

--------------
mysql Ver 14.14 Distrib 5.1.30, for portbld-freebsd7.1 (i386) using 5.2

Connection id: 224869
Current database: appare-kikaku
Current user: appare-kikaku@59.106.27.220
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.1.42 FreeBSD port: mysql-server-5.1.42
Protocol version: 10
Connection: mysql108.db.sakura.ne.jp via TCP/IP
Server characterset: ujis
Db characterset: utf8
Client characterset: ujis
Conn. characterset: ujis
TCP port: 3306
Uptime: 39 days 9 min 32 sec

Threads: 1 Questions: 7688013 Slow queries: 0 Opens: 112332 Flush tables: 1 Open tables: 7328 Queries per second avg: 2.281
--------------

mysql> set names utf8;
Query OK, 0 rows affected (0.02 sec)

mysql> status
--------------
mysql Ver 14.14 Distrib 5.1.30, for portbld-freebsd7.1 (i386) using 5.2

Connection id: 224869
Current database: appare-kikaku
Current user: appare-kikaku@59.106.27.220
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.1.42 FreeBSD port: mysql-server-5.1.42
Protocol version: 10
Connection: mysql108.db.sakura.ne.jp via TCP/IP
Server characterset: ujis
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 39 days 9 min 45 sec

Threads: 1 Questions: 7688195 Slow queries: 0 Opens: 112332 Flush tables: 1 Open tables: 7328 Queries per second avg: 2.281
--------------
−−−−−−−−−−−−−−−−−−−−

さっき作ったSQLを実行。以下はa.sqlだけど各自作ったSQLを実行

−−−−−−−−−−−−−−−−−−−−
SQL> source a.sql
....
(エラーとかワーニングを斜め読みして不審ならググる)
....
−−−−−−−−−−−−−−−−−−−−


完了したらこのままログアウトせずに日本語のテーブルselectしてみて日本語出てたらutf8で入ったと思っていんじゃねぇの。多分。

以上!


posted by wani at 21:41 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

さくらレンタルサーバのviをUTF-8対応に

あー面倒くせぇな、環境づくり
普通に使えろよ、なぁ

(1)vimのインストール
↓これに従った
http://d.hatena.ne.jp/furyu-tei/20091029/1256751598

ただしbashにしたので手順の中の.cshrcに関する(7)と(8)はやらない。


(2).bashrcの編集
.bashrcにPATH指定を追加。単純に$PATH:のあとに今回vimを設置したディレクトリを指定するだけ。あと無意識に'vi'って打鍵しちゃうんでエイリアスも作っておく。
−−−−−−−−−−−−−−−
export PATH=$PATH:$HOME/local/bin
alias vi=vim
alias view='vim -v' 
−−−−−−−−−−−−−−−


以上!
posted by wani at 16:52 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2010年04月23日

さくらレンタルサーバのpythonでMySQLdbを

さくらインターネットと契約した。
んで、自宅サーバにあるpythonモジュールを移行しようとしたんすね。
さくらインターネットはMySQLも使えるし単純移行だべなと思ってた。
けど(当たり前なのかもしれんが)pythonからMYSQL使うためのMySQLDBが入ってないんすね。
自宅サーバのように勝手にインストールできないし、どうすべかと1日悩んだ結果が以下。
ググった結果何が正解なのかわからず、とりあえずこれで動いたというシロモノ。

(1)以下の内容でシェルを作り、実行する。
コマンドラインだとexportコマンドとか許してくれないんだね。
他にもfor文は使えないけどwhile文が使えるとか、90年代UNIXのシェルしかできないエンジニアにとっては苦痛の環境。
$HOMEに以下シェルを作って目をつぶって実行。
無論何してるかはしらない。

−−−−−−−−−−−−−−−−−−−−−
export VROOT=$HOME/chroot

mkdir -p $VROOT/usr/local/src/
cd $VROOT/usr/local/src/

mkdir -p $VROOT/usr/local/lib/python2.6/site-packages
ln -s $VROOT/usr/local/lib/python2.6 $VROOT/usr/local/lib/python


export PYTHONPATH="$VROOT/usr/local/lib/python:$VROOT/usr/local/lib/python/site-packages"
export PATH="$VROOT/usr/local/bin:$PATH"
export LD_LIBRARY_PATH="$VROOT/usr/local/lib"

wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py --prefix=$VROOT/usr/local
python ez_setup.py --prefix=$VROOT/usr/local -U setuptools

wget http://jaist.dl.sourceforge.net/project/mysql-python/mysql-python-test/1.2.3c1/MySQL-python-1.2.3c1.tar.gz
tar xvzf MySQL-python-1.2.3c1.tar.gz
cd MySQL-python-1.2.3c1
python setup.py install --prefix=$VROOT/usr/local
−−−−−−−−−−−−−−−−−−


(2)実行すべきpythonのヘダーは以下を使う。

−−−−−−−−−−−−−−−−−−
#!//usr/local/bin/python
#!/usr/bin/env PYTHONPATH=/home/(ユーザ名)/chroot/usr/local/lib/python2.6:/home/(ユーザ名)/chroot/usr/local/lib/python2.6/site-packages')
# -*- coding: utf8 -*-

import site
site.addsitedir('/home/(ユーザ名)/chroot/usr/local/lib/python2.6/site-packages')

import sys
sys.stdout = codecs.getwriter('utf_8')(sys.stdout)

#(ここから下は"import MySQLdb"も含めて普通に書く)
−−−−−−−−−−−−−−−−−−−

やっぱ環境作るの面倒くせぇな。
posted by wani at 21:41 | Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする