ここ10年ほど、データベースは PostgreSQLを使ってきました。
使用するサーバの関係で、今年から MySQLを使っています。
まだまだ不慣れなため、勉強したことを少しずつ書いていきたいと思います。
* データをダンプ
- データベース全体を保存
1$ mysqldump --single-transaction -u (ユーザ名) -p (データベース名) > out.dump
- テーブルを指定して保存
1$ mysqldump --single-transaction -u (ユーザ名) -p -t (データベース名) (テーブル名) > out.dump
* ダンプデータをリストア
1 |
$ mysql --default-character-set=utf8 -u (ユーザ名) -p (データベース名) < out.dump |
* いろいろ試したこと
- ダンプ時に指定したオプション(
--single-transaction
)について
オプションなしで実行したところ、エラーが発生。123$ mysqldump -u (ユーザ名) -p (データベース名) > out.dumpmysqldump: Got error: 1044: Access denied for user (ユーザ名)@'localhost' to database (データベース名) when using LOCK TABLES【原因】テーブルロック権限(LOCK TABLES)がないため。
【回避方法】オプション--single-transaction
の指定。 - リストア時の文字コード指定(
--default-character-set=utf8 -u
)について
オプションなしで実行したところ、エラーが発生。123$ mysql --default-character-set=utf8 -u (ユーザ名) -p (データベース名) < out.dumpERROR 1044 (42000) at line 38: Access denied for user (ユーザ名)@'localhost' to database (データベース名)