cakephp3 – DB設定時のTime Zoneエラー

Windows10でXampp使ってcakephp3を動かすとき、DB設定のtimezoneをAsia/Tokyoにすると下記エラーがでた。
General error: 1298 Unknown or incorrect time zone: ‘Asia/Tokyo’

対処法は、ここのとおりやったらできた。

ここから、timezone_2017a_posix_sql.zipをダウンロード・展開して、出てきたsqlファイルをどこかに置く。

そして、下記のようにやる。
$ cd /d/xampp/mysql/bin
$ ./mysql -u root mysql -p < /e/timezone_posix.sql

cakephp2 – database.phpの情報でmysqlのpdoで接続する

cakephp2で、database.phpの情報でmysqlのpdoで接続する方法。

下記で、database.phpで設定している内容を取得できる。

下記で、dbに接続できる。

下記で、データベースに存在するテーブルをすべて削除できる。

下記で、データベースにsqlをインポートできる。

Mac El Capitan – MySQLインストール・設定

Macの状態

  • El Capitan 10.11.5です。
  • brewはインストール済みです。

MySQLインストール

MySQL起動

MySQL起動時のエラー

macを再起動したらなおった。mysqlを再インストールしてもなおらなかった。

MySQLの初期設定

rootパスワードの強度設定、新パスワード作成、アクセス制限などをする。全部yとしておく。

MySQLを使ってみる

phpMyAdminをインストール

phpMyAdminをダウンロードする

https://www.phpmyadmin.net/downloads/から、phpMyAdmin-4.6.2-all-languages.zipをダウンロードして、解凍する。

配置・設定

ブラウザで見てみる

http://localhost/phpmyadmin/

———————
追伸:
phpMyAdminもbrewでインストールできた。

brewでphpMyAdminをインストール

参考:https://blog.frd.mn/install-nginx-php-fpm-mysql-and-phpmyadmin-on-os-x-mavericks-using-homebrew/

Nginxの設定(例)

$ vim /usr/local/etc/nginx/nginx.conf

下記を最後に加える

cloud9でcakephp3・MySQLを使う

cloud9プロジェクトの作成

cloud9でPHPを選択してプロジェクトを作ります。

MySQLの起動

phpMyAdminのインストール

上記URLにアクセスしたらphpMyAdminが表示される。初期ではusernameと、パスワード空で入れる。root以外のユーザを作成したりする。

composerのインストール

composerを移動する

cakeプロジェクトの作成

プレビューを見る

cloud9のメニューのPreviewからプレビューを開く。database.phpの設定がまだだが、とりあえず初期画面が表示される。

cake3

database.phpの設定

config/app.phpの229行目に下記があるので、修正する。

RDSからEC2のmysqlに移す

RDSは便利ですが、高かったです。

EC2のMySQLのバックアップ

RDS運用の前はEC2のMySQLで運用していたので、古いですが現状のEC2のMySQLを一応バックアップしておきます。

EC2のMySQLのデータベースを空にする

RDSからEC2のMySQLにインポートする

ローカルのMySQLからAmazonRDSに移管する

EC2を使っていて、EC2のサーバに直接MySQLのDBを入れている状態から、AmazonRDSに移管します。自動でバックアップとかしてくれるので便利だからです。

Amazon RDSのインスタンスを作成する

まず、RDSのインスタンスを作成します。https://aws.amazon.com/jp/rds/getting-started/インスタンスを作る時に、データベースのID、パスワード、データベース名等を登録しました。エンジンはAurora 5.6.10aというやつです。

Amazon Aurora は、MySQL と互換性のあるリレーショナルデータベースエンジンで、高性能の商業用データベースの可用性およびスピードと、オープンソースデータベースのコスト効率性および簡素性を併せ持っています。Amazon Aurora は、MySQL の 5 倍の性能を持ち、同様の機能や可用性を提供している商用データベースの 10 分の 1 の価格です。

RDSにも、セキュリティグループがあります。このセキュリティグループの設定を変更して、EC2からアクセスできるようにします。

EC2のMySQLのデータを取り出す

RDSにデータをインポートする

参考:MySQL DB または MariaDB DB から Amazon RDS MySQL または MariaDB DB インスタンスへのデータのインポート

上記によると、下記コマンドで、取り出してインポートするが一緒にできるらしい。

できた。便利だ。

あとは、アプリケーションのデータベースの設定を変更すれば完了します。

mysqldump – 特定テーブルの構造のみダンプ

参考:4.9.7. mysqldump(テーブル構造とデータのダンプ)

特定テーブルの構造のみダンプしたいんじゃ。

これでいいのじゃ。-dを使うと構造だけダンプしてくれるのじゃ。

復元は下記のようにする。

capistrano3でcakephpのmigrations pluginを実行させる

cookpadの人がridgepoleというのを作られまして、これはべきとうせいが保証されているらしい。ちなみにべきとうせいという読み方は間違っているかもしれない。漢字が変換で出てこない。どうもテーブル一覧つくってそれを更新するだけでいいっぽくて、その一覧をみながらないやつを足したり、いらないやつを削除したりしてくれるっぽい。migrations pluginみたいに、ここではaテーブルを追加し、次はbテーブルを削除しつつ、cテーブルを追加する、とかだと、もうaテーブルが既に存在する時点で終了になったりするのですごく便利な気がする。

といいつつ、今回はmigrations pluginをcapistranoで実行させます。サブモジュールがデプロイできない。下記の真似したらできた。自分は拡張子が.capで大丈夫だった。確かに拡張しはCapfileに書いてあった。

capistrano3 + git で submodule も一緒にデプロイしたい場合

上記にて、migrations pluginを展開した後に、下記を実行すればいい。

mysql 大きいサイズのsqlを分割してインポートする

大きいsqlをインポートするのら、php.iniで最大サイズを変更すればできるといえばできる。ローカル環境とかなら。でもインポート中にエラーとかでると結局sql直したりしなきゃいけない。今回は100テーブルあって全部で30MBくらいのsqlなので、テーブル毎に分割してインポートする。

db00〜db99までのファイルができた。db00は最初の方のファイルの説明みたいな文章が入ってるだけなので、実際使うのはdb01〜db99までの99ファイル。99回インポートを手動するのはめんどくさい。。シェルスクリプトを作ってみる。

これでできた。

EC2 phpmyadminが動かない

APCとmemcachedを入れたことが原因だった。

当初でていたエラーはこれ。

これはセッションが変なときに出るやつらしい。PHPMyAdmin Error: Class ‘PMA_Message’ not foundここにエラーのことが書いてある。セッション書き込み権限がない的なことが書いてある。

通常、php.iniのsession.save_pathに設定されているディレクトリにsessionが書き込まれるので、そこの権限がapacheになってないといけない。chown root:apache ディレクトリ、chmod 660 ディレクトリみたいになっているか確認する必要がある。自分の場合はそうなっていたが、APCをインストールしたらこのエラーがでるらしい。下記によって、phpmyadmin内ではapcを無効にするとエラーがでなくなった。

vim /etc/httpd/conf.d/phpMyAdmin.conf

参考:Running phpMyAdmin with APC cache enabled, fatal PHP errors

これで当初のエラーがなくなったが、下記のようなセッション関連のエラーが出続けてなんでかなと思ったら、memcachedを入れたときに、/etc/php.d/memcache.iniに、session.save_path=”tcp://localhost:11211″と書いていた。だから、php.iniのsession.save_pathは無効になってる状態だった。。

memcachedを使いつつ、phpmyadminを正常に動かす方法もあるのかもしれないけど、下記でmemcachedをphpmyadminだけで無効にする方法が書いてあった。

Phpmyadmin doesn’t work if session.save_handler set to memcache

You might have to change this lines in phpmyadmin folder ‘libraries/session.inc.php’:
Try include this line at the top of the file: ini_set(‘session.save_path’, “/tmp/”);
Uncomment this line (about 74): ini_set(‘session.save_handler’, ‘files’);

ソースコードいじるっていうのはかなり微妙だし、やってるのはini_setだけなので、/etc/httpd/conf.d/phpMyAdmin.confを下記のようにてみた。

これでできた。長かった。。

ちなみに、config.inc.phpの場所は、色んなブログに、/usr/share/phpMyAdmin/config.inc.phpと書いてあったので、ないないと思ってたら、/etc/phpMyAdmin/config.inc.phpにあった。

AmazonLinuxで割と新しい版のphpmyadminをインストールするには、下記でやるとよかった。

cakePHP findのorderで配列の順番にソートするように設定する

Vagrant CentOS6.5 phpMyAdminを使う

phpmyadmin使えるようにしよう。めんどくさいし。

apache再起動したけど、入れない。
スクリーンショット 2014-02-28 3.25.07

というエラーがでている。
phpMyAdmin.confの設定で誰でもOKにしてみる。

おお入れた。

mysqlコマンド

$ mysql -p -u root
show databases;
create database hoge;
use hoge;
source import.sql;
show tables;
select name,value from hoges limit 10;
select * from hoges where name=’hoge’;
update hoges set value=’hogehoge’ where name=’hoge’;

show columns from hoges;
select * from hoges order by name desc limit 3;
select name,value from hoges where name in(‘hoge’,’hogeo’,’hogeko’);

//インポート
mysql -u root -p DB名 < dump.sql //エクスポート mysqldump -u root -p DB名 > dump.sql

//テーブル空にする
TRUNCATE TABLE table_name;

//ユーザーの作成
CREATE USER user IDENTIFIED BY ‘password’;

MySQL – 文字コードの確認・設定関連のコマンド

MySQLの文字コードに関する設定を確認するコマンド

データベースの文字コード変換コマンド

テーブルの文字コードをチェックするコマンド

テーブルの文字コード変換コマンド