設計書なき開発の進め方(Mac, MySQL, Symfony) #5

 

まずはsymfonymysqlを使うようにするための設定。

./symfony configure:database "mysql:host=localhost;dbname=virtuosoec"

 

これで、config/databases.ymlファイルが以下のように編集される。

このファイルはおそらく、手動でメンテするのではなく上記コマンドで変更するものと思われます。

[config/databases.yml]
all:
 doctrine:
   class: sfDoctrineDatabase
   param:
     dsn: 'mysql:host=localhost;dbname=virtuosoec'
    username: root
     password: null

 

次からsymfonyコマンドでソースコードを自動生成していきます。そのときソースコードには、チームや部署の作業者の名前が入ります。propertiesiniを使って名前を入れます

config/properties.ini

 

スキーマの設定。このファイルを元にSQLやモデルファイルが作成されます。とりあえずは必要最低限、仕様に出てきた項目を用意します。

[config/doctrine/schema.yml]

Item:
 columns:
   id: { type: integer, notnull: true, primary: true, autoincrement: true }
   name: { type: string(255), notnull: true }
   description: { type: string, notnull: true }
   unit_price: { type: decimal, notnull: true }

 

./symfony doctrine:build-mode./symfony doctrine:build-sql

./symfony doctrine:insert-sql

 

nakagaki-kenji-no-macbook-pro:virtuosoec kenji$ ./symfony doctrine:insert-sql>> doctrine  creating tables

PHP Warning:  PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/kenji/virtuosoec/lib/vendor/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470

 

Warning: PDO::__construct(): [2002] No such file or directory (trying to connect via unix:///var/mysql/mysql.sock) in /Users/kenji/virtuosoec/lib/vendor/symfony-1.4.18/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 470

 

...実際にデータベースに接続しようとした時に、この警告が発生します。調べてみると、"UNIX Socket"との値が警告メッセージの中の値と異なっています。

 

nakagaki-kenji-no-macbook-pro:virtuosoec kenji$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 7

Server version: 5.5.27 MySQL Community Server (GPL)

 

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

 

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

mysql> status

--------------

mysql  Ver 14.14 Distrib 5.5.27, for osx10.6 (i386) using readline 5.1

 

Connection id:7

Current database:

Current user:kenji@localhost

SSL:Not in use

Current pager:stdout

Using outfile:''

Using delimiter:;

Server version:5.5.27 MySQL Community Server (GPL)

Protocol version:10

Connection:Localhost via UNIX socket

Server characterset:latin1

Db     characterset:latin1

Client characterset:utf8

Conn.  characterset:utf8

UNIX socket:/tmp/mysql.sock

Uptime:31 min 1 sec

 

Threads: 1  Questions: 36  Slow queries: 0  Opens: 35  Flush tables: 1  Open tables: 27  Queries per second avg: 0.019

--------------

 

mysql

 

設定ファイルに合うように、configure:databaseコマンドを修正してもう一度作成します。

./symfony configure:database "mysql:host=localhost;dbname=virtuosoec;unix_socket=/tmp/mysql.sock"

 

テストデータを用意します。

[data/fixtures/fixtures.xml]

Item:

  B001DCQI82:

    name: Beethoven: The Symphonies [Box Set, CD, Import, From UK]

    description: Herbert von Karajan

    unit_price: 2468

  B004HGQXB8:

    name: Complete Beethoven Edition [Box Set, CD, Import, From US]

    description: 交響曲は、他にも安いのがいくらでもあるので...(以下省略)

    unit_price: 8480

    

./symfony doctrine:data-load

 

 

今日はここまで