2011年11月6日日曜日

[symfony2][mac]データベース関連のコンソールでエラー

普段は会社でしかsymfony2をいじってなかったのだが、散々遅れたので家のmacでよやろうと思ったらsymfonyのコンソールでエラーが出ました。

コンソールで実行したコマンドは
php app/console doctrine:schema:update --force

出てきたエラーは
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
[ErrorException]
Warning: PDO::__construct(): [2002] No such file or directory
(trying to connect via unix:///var/mysql/mysql.sock) in /Applications/
MAMP/htdocs/ext/vendor/doctrine-dbal/lib/Doctrine/DBAL/Driver/
PDOConnection.php line 36

でした。どうして良いか分からず途方に暮れてましたが、以前に「googleグループの日本symfonyユーザー会に気軽に質問して下さい。」とメールを頂いていたのでディスカッションに投稿してみました。ものの15分ぐらいで返信ありました。感謝感謝。

その投稿を引用すると
...
エラーを見るに、UNIXソケットを利用してMySQLの接続を行おうとして、
接続に失敗しているものと思われます。

http://jp2.php.net/manual/ja/ref.pdo-mysql.connection.php

app/config/config.yml にてUNIXソケットの指定をすれば接続できるかと思います。
設定については下記のドキュメントを参考にしてください。
# unix_socket という項目名です

http://symfony.com/doc/2.0/reference/configuration/doctrine.html
...
との事でした。

早速リンク先のConfiguration Referenceを見ると
unix_socket: /tmp/mysql.sock
ふむふむ、この「mysql.sock」を探せば良いのか…とmacのspotlightで検索するも出て来ません。
ググれ俺。
って事で「いろいろあって仕事に手が付かない、、」というブログの記事に(感謝感謝)。
mysqladmin version
で調べればわかるとあったのですが、分からず(この理由は後でわかります。)
諦めかけた時にMAMPのスタートページをふと見ると、「
ソケット /Applications/MAMP/tmp/mysql/mysql.sock」ってある…

今日の教訓「灯台下暗し」

そんな訳でファイルを修正
# app/config/config.yml
doctrine:
 dbal:
   ...
   unix_socket:  /Applications/MAMP/tmp/mysql/mysql.sock

で意気込んで「php app/console doctrine:schema:update --force」を実行…

また違うエラー出たー!
今度のエラーは
Exception]
DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead

ん?デフォルトのタイムゾーンが違うぞっていう話??
おかしいとおもいいつつMAMPのphp.iniを開く。
やっぱし「date.timezone = "Asia/Tokyo"」になってました。そりゃそうだ、前に直したもんな。なんぞや?...
やっぱしググれ俺。
って事で、それっぽい記事を見つけました。tech tech -テクテクブログ-の記事(感謝感謝)を参考にバックアップとコピーする。

今度こそと「php app/console doctrine:schema:update --force」を実行…

無事実行されました。
なるほど、だからさっきの「mysqladmin version」も分からなかったんだなと一人納得。

ということで今日はちっとも作業がすすみませんでした。
ではでは。

0 件のコメント:

コメントを投稿