Linuxのmysqldumpでとったダンプを、WindowsのXAMPPのmysqlにレストアしようとすると「ERROR 1064 (42000) なんちゃら~」とエラーが出る。(冷や汗)
何も考えずに取ったダンプファイルなのでどうやら文字コードの問題らしい。
Linux側はUTF8なのでWindowsもあわせてやろうとmy.confでクライアントの設定をutf8とかにしてみてもダメ。
コマンドラインのオプションで指定するといけた。
文字コード指定のオプション
--default_character_set utf8
Linuxでダンプ
mysqldump データベース名 -u ユーザ名 -p > ダンプファイル
Windowsでレストア
mysql データベース名 -u ユーザ名 -p --default_character_set utf8 < ダンプファイル
2016年4月26日火曜日
2012年6月25日月曜日
max_allowed_packet
クエリーやデータが大きくてmax_allowed_packetのエラーが出る場合
ふつうは、my.conf, my.ini等のmax_allowed_packetの値を変更してmysqldの再起動ですが、my.confをいじれないが、mysqlの特権などはある場合。(主にホスティングサーバでphpmyadmin上から利用している場合など)
max_allowed_packetの確認。
SHOW VARIABLES LIKE 'max_allowed_packet';
max_allowed_packetの変更。
SET GLOBAL max_allowed_packet=16*1024*1024;
max_allowed_packetの確認。
SHOW VARIABLES LIKE 'max_allowed_packet';
max_allowed_packetの変更。
SET GLOBAL max_allowed_packet=16*1024*1024;
2010年5月25日火曜日
MySQL最初の設定やバックアップ
PostgreSQL使いだしてからは、MySQLはあんまり触らなくなりました。
そうすると使い方忘れてしまって大変。
■簡単なセットアップ
・シェルのコマンドプロンプト
root権限でログイン
> mysql -u root -p
・以後mysqlのコマンドプロンプト
データベースの作成(文字コートUTF8、照合順序utf8_unicode_ci)
> create database データベース名 character set utf8 collate utf8_unicode_ci;
localhost接続からのデータベースユーザの作成(ユーザ名hoge、localhostから接続)
> create user 'hoge'@'localhost' identified by 'パスワード';
作成したユーザに作成したデータベースの全権を与える
> grant all on 'データベース名'.* for 'hoge'@'localhost';
mysqlコマンドライン終了
> \q
■データベースのダンプとレストア
シェルのコマンドプロンプト
ダンプ
> mysqldump データベース名 -u ユーザ名 -p > ダンプファイル名
レストア
(drop database & create databaseをした後に行う)
>mysql データベース名 -u ユーザ名 -p < ダンプファイル名
登録:
コメント (Atom)