ApacheとphpはOS X標準のものを使い、phpMyAdminでアクセスできるようになりました。
設定ファイルで変えたのは、
/etc/apache2/httpd.confではphpモジュールのコメントを外したこと。
/etc/php.iniでmysqlのソケットファイルと、ポート番号を加えたこと。
そのくらいです。
apachectlで起動すると、あっさりと立ち上がりました。
まぁ、一応ということでphp.iniのファイルサイズ制限を大分増やしました。これはphpMyAdminでsqlを食わせるためにと思ってのことでした。ですが、データベース全体のコピーを取るならコマンドラインの方が早かろうと、phpMyAdminは移行できたかどうかの確認用となりました。
さて、データベース(MySQL側)からデータを引っこ抜きます。
mysqldump -u root -p -x --all-databases > all_database.sql
それから、このファイルを新しい環境(MariaDB側)にコピーして、
mysql -u root -p < all_database.sql
するとエラーになって読み込めません。
内容は、
Invalid default value for 'ctime'
ctimeはDATETIME型でデフォルトをCURRENT_TIMESTAMPとしています。phpMyAdminではエラーとならずに作れたから問題はない筈なのですけれど。……一体何がいけないのでしょう?
webで調べてみたところ、CURRENT_TIMESTAMPは一つのテーブルに一つの項目だけデフォルト入力できるようです。TIMESTAMP型が対象のようですが、DATETIME型だとどう違ってくるのかよく判りません。
一応無難に、DATETIMEからTIMESTAMPに形式を変更し、TIMESTAMP型が2箇所出てくるテーブルについて(登録日と変更日が入っていました)は、片側はデフォルトを0として回避することができました。(あぁ、PHPのソース直さなきゃ……)
phpMyAdminで二つのDATETIME型の項目にCURRENT_TIMESTAMPをデフォルト値として設定できたということは、MySQLデータベースエンジン自体は気にもせずに動いていると思われます。実際、全てのレコードに値はセットされていましたし。
コマンドラインのmysqlがSQL読み込み時にチェックを入れていたとしたら無意味なんじゃないの?
若しくはエンジン側で出したエラーだとしても、動いているのに何弾いているんだよ。と思ってしまう訳で。
ちょっとだけ先に進みました。
今度は一括でなく、データベースごとに個別でコピーしてみましょう。

