web-dev-qa-db-ja.com

CakePHPデータベース接続 "Mysql"が見つからないか、作成できませんでした

これについては他にもいくつかの投稿がありましたが、答えは私には役に立たなかったようです。

ローカルマシンの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',
    );
}

パスワードBenmypassというmysqlユーザーを作成し、その下にCVというデータベースを作成しました。さらに、testデータベースに関する言及はどこにもありません。助けて?

30
Ben Caine

最後に私がしたことは、データベースにテーブルを作成したが、データがなかったことです。

CakePHPがMySql接続を認識するためには、データが入ったテーブルが必要です。

0
Ben Caine

ソケットを追加してみてください。

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
47
Domingo C.

unix_socket(特にOS Xユーザー向け)の代替手段は、localhost127.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',
        );
19
enagra

編集php.iniおよび追加:

extension=php_pdo_mysql.dll 

次に、Webサーバーを再起動します

10
King Jk

Macでは、MAMPを開発プラットフォームとして使用し、ケーキの正しいソリューションはDomingo Casarrubioソリューションを使用しています。

unix_socketパラメーターをデータベース構成に追加します。

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
8
DecoMartins

このエラーは、接続しているデータベースユーザーに適切な権限がない場合にも発生する可能性があります。最低限必要なのは、INSERT、SELECT、UPDATE、およびDELETEだけです。

CakePHPがいずれかの曖昧なデータベース接続エラーを与える可能性が高いため、常にユーザー名/パスワードを必ず確認してくださいand最初にユーザー権限。

6
Scott

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',
);

それでおしまい。

5
Brajinder Singh

Mysql PDOサポートが欠落している可能性があります。

ルートとして(またはSudoを使用):

apt-get install php5-mysql
2
Mike Rose

私は同じ問題を抱えており、そのユーザーが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";

これにより、問題の理由がわかり、原因を適切に変更できるようになります。

2
user3834255

なぜなら、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’
);

最後に、それは私のために働いています!

0
Quy Le

それはあなたのモデルです。それを開いて、次の行が必要です

public $useDbConfig = 'local';

これにより、グローバル設定が上書きされ、ローカルに戻されます

0
Tanvir Gaus

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」が見つからないか、作成できませんでした。」。

0
FaustoW

Phpファイルにテーブルを作成する必要があります... phpMyAdminを開き、データベースCVが存在することを確認します。

0
Dragonman117

OSX Yosemiteにアップグレードし、次の行を挿入することが私にとってはうまくいかなかったため、この問題が発生しました。

 'unix_socket' => '/tmp/mysql.sock'
0
paulleephp

私は週末を通してこれに苦労してきましたが、ついに解決しました。 php.iniが存在しない「extensions dir」を指していることがわかります。 phpinfo()ファイルを作成し、このフィールドの値を確認します。 extensions_dir

Mampのphpがインストールされているフォルダーには、debug-non-zts-20131226フォルダーがあり、これはphpinfo()に示されている値とは異なることに気付きました。私がしたことは、このフォルダーを複製し、名前をphpinfo()の値に変更することでした。おそらくphp.iniファイルを変更できますが、私はしたくありませんでした。

あなたが問題を解決したかどうかはわかりませんが、私の問題が異なっていてグーグルが私をここに連れて行ったので、私はこれを投稿しています。

お役に立てれば。

0
Chuy

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システムで作業しています。

0
jocassid

私の場合、データベースが存在しなかったためです。 ./app/Console/cake schema createを実行すると作成されますが、作成されませんでした。 mysqlでcreate database <database name>を使用して作成しました(既に特権を割り当てていましたが)。

0
Tyler Collier

Godaddy(または他の共有ホスティング)を使用している場合、発信接続をポート80および443のみに制限している可能性があります。

0
aexl