これについては他にもいくつかの投稿がありましたが、答えは私には役に立たなかったようです。
ローカルマシンのCakePHPページに移動すると、1つのエラーがあります。
Cakeはデータベースに接続できません。データベース接続「Mysql」が見つからないか、作成できませんでした。
Home.ctpで この便利なコード を実行すると、次の応答が返されます。
エラー!:SQLSTATE [42000] [1049]不明なデータベース 'test'
ただし、私のUsers/Ben/Sites/myapp/app/Config/database.php
は次のようになります(ユーザー/ベン/サイトでドキュメントルートを検索するようにMAMPを設定します):
<?php
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'Host' => 'localhost',
'login' => 'Ben',
'password' => 'mypass',
'database' => 'CV',
);
}
パスワードBen
でmypass
というmysqlユーザーを作成し、その下にCV
というデータベースを作成しました。さらに、test
データベースに関する言及はどこにもありません。助けて?
最後に私がしたことは、データベースにテーブルを作成したが、データがなかったことです。
CakePHPがMySql接続を認識するためには、データが入ったテーブルが必要です。
ソケットを追加してみてください。
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
unix_socket
(特にOS Xユーザー向け)の代替手段は、localhost
を127.0.0.1
に置き換えることです
次のようになります:
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'Host' => '127.0.0.1',
'login' => 'user',
'password' => 'password',
'database' => 'database-name',
'prefix' => '',
'encoding' => 'utf8',
);
編集php.ini
および追加:
extension=php_pdo_mysql.dll
次に、Webサーバーを再起動します
Macでは、MAMPを開発プラットフォームとして使用し、ケーキの正しいソリューションはDomingo Casarrubioソリューションを使用しています。
unix_socket
パラメーターをデータベース構成に追加します。
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
このエラーは、接続しているデータベースユーザーに適切な権限がない場合にも発生する可能性があります。最低限必要なのは、INSERT、SELECT、UPDATE、およびDELETEだけです。
CakePHPがいずれかの曖昧なデータベース接続エラーを与える可能性が高いため、常にユーザー名/パスワードを必ず確認してくださいand最初にユーザー権限。
1年前にこれを聞いたことがありますが、おそらく今までにこれを解決できたでしょう。ただし、XAMPPにCakePHPをインストールしようとするときに同じ問題に直面している場合は、「ログイン」を「ルート」、つまりXAMPPのデフォルトログインに変更し、「パスワード」を「ブランク。 database.phpファイルの完全なコードは次のようになります。
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'Host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'ckblog',//replace with your own database name
'prefix' => '',
//'encoding' => 'utf8',
);
それでおしまい。
Mysql PDOサポートが欠落している可能性があります。
ルートとして(またはSudoを使用):
apt-get install php5-mysql
私は同じ問題を抱えており、そのユーザーがPHPMyAdminで作成されたとしても、CakePhpがユーザーにパスワードを使用したことを受け入れなかったことが原因であることが最終的に判明しました。パスワードなしでユーザー「root」を使用する必要がありました。
ファイルに次の変更を加えた後にこれを見つけました/ lib/Cake/Error/exceptions.php。
元の行:
protected $_messageTemplate = 'Database connection "%s" is missing, or could not be created.';
代わりにこれに変更されます:
protected $_messageTemplate = "Database connection \"%s\" is missing, or could not be created:\n %s";
これにより、問題の理由がわかり、原因を適切に変更できるようになります。
なぜなら、cake bakeはデータベースへの接続にUNIXソケットを使用するからです
したがって、接続文字列にunix_socketを追加する必要があります。
WASにmysql.sockを保存する場所を確認する必要があります
例:私の場合、MACOS 10.11でxamppを使用しています
(Config/database.phpファイルを編集)
public $default = array(
‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘Host’ => ‘localhost’,
‘login’ => ‘root’,
‘password’ => ‘root’,
‘database’ => ‘cakephp’,
‘encoding’ => ‘utf8’,
‘unix_socket’ => ‘/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock’
);
最後に、それは私のために働いています!
それはあなたのモデルです。それを開いて、次の行が必要です
public $useDbConfig = 'local';
これにより、グローバル設定が上書きされ、ローカルに戻されます
bunt users out:私のubuntu 13.10マシンでも、apachefriendsから直接ダウンロードされた最新のxamppで同じエラーが発生しました。このエラーについて私が見つけることができるすべての投稿でほとんどのものを試してみましたが、Mac固有のものではありませんでした。最終的に、修正はたまたまここで選ばれた答えと同じでした:
接続するプログラム用にmysqldが作成するソケットを見つけます。
user@Host /opt$ find . -name mysql.sock
/opt/lampp/var/mysql/mysql.sock
それをcakePHPデータベース設定ファイル(cakePHP)/app/Config/database.phpに追加します
'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'
私にとって、これは最終的に「エラーなしでケーキコマンドを実行できるようになりました:データベース接続「Mysql」が見つからないか、作成できませんでした。」。
Phpファイルにテーブルを作成する必要があります... phpMyAdminを開き、データベースCVが存在することを確認します。
OSX Yosemiteにアップグレードし、次の行を挿入することが私にとってはうまくいかなかったため、この問題が発生しました。
'unix_socket' => '/tmp/mysql.sock'
私は週末を通してこれに苦労してきましたが、ついに解決しました。 php.iniが存在しない「extensions dir」を指していることがわかります。 phpinfo()ファイルを作成し、このフィールドの値を確認します。
Mampのphpがインストールされているフォルダーには、debug-non-zts-20131226フォルダーがあり、これはphpinfo()に示されている値とは異なることに気付きました。私がしたことは、このフォルダーを複製し、名前をphpinfo()の値に変更することでした。おそらくphp.iniファイルを変更できますが、私はしたくありませんでした。
あなたが問題を解決したかどうかはわかりませんが、私の問題が異なっていてグーグルが私をここに連れて行ったので、私はこれを投稿しています。
お役に立てれば。
http://php.net/manual/en/pdo.connections.php の例2のコードを/app/View/Pages/home.ctpにつないでみました。 PDOコンストラクターの引数を修正し、クエリ内のテーブルの名前を変更する必要がありました。例2のコードは、「エラー!:ドライバーが見つかりませんでした」というエラーを返しました。 King Jkの回答に基づいて、php_pdo_mysql.soがどこにあるのだろうと思い始めたときに、php.iniを変更しようとしました。 http://php.net/pdo_mysql は、PHPの一部として構成する--with-pdo-mysqlオプションを使用してコンパイルされた方法を示しました。問題。私はPHP 5.5.9およびApache Webserver 2.4.6を使用してUbuntu 12.10システムで作業しています。
私の場合、データベースが存在しなかったためです。 ./app/Console/cake schema create
を実行すると作成されますが、作成されませんでした。 mysqlでcreate database <database name>
を使用して作成しました(既に特権を割り当てていましたが)。
Godaddy(または他の共有ホスティング)を使用している場合、発信接続をポート80および443のみに制限している可能性があります。