読者です 読者をやめる 読者になる 読者になる

ITの隊長のブログ

ITの隊長のブログです。いや、まだ隊長と呼べるほどには至っていないけど、日々がんばります。CakePHPとPlayFrameworkを使って仕事しています。最近はAngular2をさわりはじめたお(^ω^ = ^ω^)

CakePHPでデータベースの連携

CakePHP MySQL

スポンサードリンク

以前苦しみました、CakePHP + Nginx
今度はCakePHP + MySQL

これはすんなりいくといいなぁ。。。


1.MySQLのインストール

MySQLのインストールは今回省きます。
参考にしたサイトはこちらになります。
MacOSXにMySQLをインストールする方法


2.データベースの作成

今回利用するデータベースの作成とその他の設定をします。

$ mysql

データベースを作成

$ create database website_cakephp;

ユーザーの設定

$ grant all on website_cakephp.* to dbuser@localhost identified by 'passwordGundam';


3.CakePHPのファイル修正

連携するためにCakePHPの~/cakephp/app/Config/database.phpを修正します。

何もしてなければ、デフォルトのままです。
といいますか、デフォルトからコピーするので当たり前ですかね

	public $default = array(
		'datasource' => 'Database/Mysql',
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'user',
		'password' => 'password',
		'database' => 'database_name',
		'prefix' => '',
		//'encoding' => 'utf8',
	);

先程データベースに設定した値に合わせて行きます。

	public $default = array(
		'datasource' => 'Database/Mysql', # 今回DBはMySQLなのでそのまま
		'persistent' => false,
		'host' => 'localhost',
		'login' => 'dbuser', # 変更
		'password' => 'passwordGundam', # 変更
		'database' => 'website_cakephp', # 変更
		'prefix' => '',
		'encoding' => 'utf8', # 変更
	);

この設定が完了したら、ブラウザからアクセスして見てください。
私のほうでは黄色メッセージも出なくなりました。

うそです。まだ出ます。

またストレートでいかない・・・(´Д`)
さて、何が原因か探してみます。

$ php -i|grep PDO
PDO
PDO support => enabled
PDO drivers => mysql, sqlite
PDO Driver for MySQL => enabled
PDO Driver for SQLite 3.x => enabled

大丈夫っぽい。

テストプログラムをもらってきて、試してみた。

<?php

    $hostname = "localhost";
    $username = "dbuser";
    $password = "passwordGundam";

    try {
          $db = new PDO("mysql:host=$hostname;dbname=website_cakephp", $username, $password);
            echo "Connected to database\n";
    }   
    catch(PDOException $e) {
          echo $e->getMessage();
    }   
?>

おろ?

$ php test.php
PDO Connection Error: SQLSTATE[HY000] [2002] No such file or directory

なんでしょこれ?

調べて見たところ
php.ini の pdo_mysql.default_socket の値が正しくないので設定しなさいとのこと
mysql.sockを設定されているはず。

$ sudo vim /etc/php.ini
pdo_mysql.default_socket=

orz

pdo_mysql.default_socket=/tmp/myql.sock

ちゃんと設定しました。

$ php test.php
Connected to database

ふぅ
でもまだブラウザから黄色はなくならない!!!(#^ω^)ピキピキ

どうやらまだやることがあるらしいです。

と思っていましたが、解決しましたとさ

	public $default = array(
		'datasource' => 'Database/Mysql', # 今回DBはMySQLなのでそのまま
		'persistent' => false,
		'host' => '127.0.0.1', # 変更
		'login' => 'dbuser', # 変更
		'password' => 'passwordGundam', # 変更
		'database' => 'website_cakephp', # 変更
		'prefix' => '',
		'encoding' => 'utf8', # 変更
	);

localhost -> 127.0.0.1 に変更したとさ
くたばりなさい。

あと一個エラーがありましたが
DebugKitが入っていないだからとか。
これは後日やります。

だって、もう力尽きそう
まぁできたのでよし。

database.phpはtestの値もありますので
うまく使わけることができれば、いいかなと思います。