programing

CakePHP 데이터베이스 연결 "Myql"이 없거나 만들 수 없습니다.

css3 2023. 10. 27. 22:06

CakePHP 데이터베이스 연결 "Myql"이 없거나 만들 수 없습니다.

이에 대한 다른 게시물들도 몇 개 있었지만, 그 어떤 답변도 저에게 통하지 않는 것 같았습니다.

케이크로 이동할 때로컬 컴퓨터의 PHP 페이지에 오류가 하나 있습니다.

케이크를 데이터베이스에 연결할 수 없습니다.데이터베이스 연결 "Myql"이 없거나 만들 수 없습니다.

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

라는 mysql 사용자를 만들었습니다.Ben비밀번호로mypass데이터베이스를 만들었죠CV그 밑에게다가, 나는 그것에 대한 언급을 찾을 수 없습니다.test어디서나 데이터베이스를 사용할 수 있습니다.도와줘요?

소켓 추가 시도:

'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 

그런 다음 웹 서버를 다시 시작합니다.

Mac에서는 MAMP를 개발 플랫폼으로 사용하여 케이크를 만드는 방법으로 도밍고 카사루비오 솔루션을 사용하는 것이 올바른 솔루션입니다.

를 합니다.unix_socket데이터베이스 구성에 대한 매개 변수입니다.

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

이 오류는 연결 데이터베이스 사용자에게 적절한 권한이 없는 경우에도 발생할 수 있습니다.INSERT, SELECT, UPDATE, DELETE의 최소한도만 있으면 된다고 생각합니다.

Cake 이후 사용자 이름/비밀번호 및 사용자 권한을 항상 먼저 확인합니다.PHP는 어느 쪽이든 모호한 데이터베이스 연결 오류를 줄 가능성이 높습니다.

1년 전에 물어보셨겠지만 아마 지금쯤은 해결했을 겁니다단, Cake 설치를 시도할 때 동일한 문제가 발생하는 경우에는XAMPP의 PHP는 '로그인'을 'root', 즉 XAMPP의 기본 로그인으로 변경하고 'password'를 ', 즉 공백'으로 두면 됩니다.데이터베이스의 전체 코드입니다.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',
);

바로 그겁니다.

저도 같은 문제가 있었는데, 결국 CakePhp가 비밀번호를 가진 사용자를 사용한 것을 인정하지 않아서 발생한 문제라는 것을 알게 되었습니다. 그 사용자가 PHMyAdmin에서 생성되었다고 해도 말이죠.비밀번호가 없는 사용자 '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";

이렇게 하면 문제의 원인을 알 수 있으므로 원인을 올바르게 변경할 수 있습니다.

OSX 요세미티로 업그레이드하고 다음 행을 삽입하면 문제가 발생했습니다.

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

mysql PDO 지원이 누락되었을 수 있습니다.

루트(또는 sudo 사용):

apt-get install php5-mysql

Ubuntu 사용자를 돕기 위해서입니다.아파치 친구들로부터 직접 다운로드 받은 최신 xampp로 우분투 13.10 기계에서도 같은 오류가 발생했습니다.이 오류에 대해 찾을 수 있는 모든 게시물의 대부분을 시도했지만 맥 고유의 것은 시도하지 않았습니다.결국, 수정은 여기서 선출된 답변과 동일하게 되었습니다.

mysqld가 프로그램에 연결하기 위해 만든 소켓 찾기:

user@host /opt$ find . -name mysql.sock
/opt/lampp/var/mysql/mysql.sock

그것을 당신의 케이크에 더하세요.PHP 데이터베이스 구성 파일(cakePHP)/app/Config/database.php

'unix_socket' => '/opt/lampp/var/mysql/mysql.sock'

이로 인해 결국 케이크 명령을 "Error: 데이터베이스 연결 "Mysql"이 없거나 생성할 수 없음" 없이 실행할 수 있게 되었습니다.

왜냐하면 케이크베이크는 데이터베이스 연결을 위해 유닉스 소켓을 사용하기 때문입니다.
연결 문자열에 대해 unix_ socket를 추가해야 합니다.
WAS에서 mysql.sock을 저장하는 위치를 확인해야 합니다.
예: 제 경우에는 MACOS 10.11에서 xampp를 사용하고 있습니다.
(편집 파일 구성/데이터베이스). )

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’
);

드디어 저를 위한 일입니다!

결국 제가 한 일은 데이터베이스에 테이블을 만들었지만 그 안에 데이터가 없다는 것이었습니다.

케이크 순서대로MySql 연결을 인식하려면 PHP에 데이터가 포함된 표가 있어야 합니다.

php 파일에 테이블을 만들어야 할 수도 있습니다...phpMyAdmin을 열고 데이터베이스 CV가 존재하는지 확인합니다.

당신의 모델입니다.그것을 열면 다음 줄이 있어야 합니다.

public $useDbConfig = 'local';

글로벌 구성을 덮어쓰고 로컬로 다시 설정합니다.

http://php.net/manual/en/pdo.connections.php 의 예제 2의 코드를 /app/View/Pages/home.ctp에 연결하려고 했습니다.PDO 컨스트럭터의 인수를 수정하고 쿼리에서 테이블의 이름을 변경해야 했습니다.예제 2 코드에서 "Error!: could not driver"(오류!: 드라이버를 찾을 수 없음)라는 오류를 반환했습니다.King Jk의 답변을 바탕으로 php_pdo_mysql.so가 어디에 살지 궁금할 때 php.ini를 수정하려고 했습니다.http://php.net/pdo_mysql 은 구성할 --with-pdo-mysql 옵션을 통해 PHP의 일부로 컴파일되는 방법을 보여주었습니다.다시 컴파일을 해서 문제가 해결되었습니다.참고 저는 PHP 5.5.9와 Apache Webserver 2.4.6이 있는 Ubuntu 12.10 시스템을 작업하고 있습니다.

제 경우에는 데이터베이스가 존재하지 않기 때문이었습니다.나는 달리기를 기대했습니다../app/Console/cake schema create그것을 만들었지만 그렇지 않았습니다.다음을 사용하여create database <database name>mysql에서 트릭을 수행했습니다(이미 권한을 할당했지만).

저는 주말 내내 이 문제로 고생하다가 결국 해결했습니다.php.ini가 존재하지 않는 "확장자 dir"를 가리키고 있음이 밝혀졌습니다.phpinfo() 파일을 만들고 이 필드의 값을 살펴봅니다.extensions_dir

mamp php 설치 폴더에 no-debug-non-zts-20131226 폴더가 있다는 것을 알게 되었고, 이 폴더는 php info()에 표시된 값과 다릅니다.제가 한 일은 이 폴더를 복제하고 이름을 phpinfo() 값으로 변경한 것입니다.아마 당신이 php.ini 파일을 수정할 수도 있겠지만 저는 그러고 싶지 않았습니다.

문제를 해결하셨는지는 모르겠지만, 제 문제가 달랐고 구글이 저를 여기로 데려갔기 때문에 앞으로 구글에 비슷한 문제가 있는 사람들을 도울 수 있기를 바랍니다.

도움이 되길 바랍니다.

Godaddy(또는 다른 공유 호스팅)를 사용하는 경우 포트 80 및 443에 대한 발신 연결만 제한할 수 있습니다.

시스템 구성:

  • 페도라 32
  • php-fpm 7.4.13
  • mariadb 10.4.17
  • 케이크 2.10.17

CAKE의 오류 메시지:

데이터베이스 연결 "Myql"이 없거나 만들 수 없습니다.

https://stackoverflow.com/a/24722976/5025060 의 답변을 사용하여 향상된 오류 메시지

데이터베이스 연결 "Myql"이(가) 누락되었거나 만들 수 없습니다.선택한 드라이버가 활성화되지 않았습니다.

저의 문제는 PHP와 SQL 사이에 "커넥터"가 설치되어 있지 않다는 것이었습니다.해결책은 다음과 같습니다.

dnf install php-mysqlnd

이를 통해 PHP는 CAKE의 데이터베이스에 지정된 대로 데이터베이스에 연결할 수 있었습니다.php 구성 파일.

언급URL : https://stackoverflow.com/questions/19280245/cakephp-database-connection-mysql-is-missing-or-could-not-be-created