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() 파일을 만들고 이 필드의 값을 살펴봅니다.
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
'programing' 카테고리의 다른 글
MySQL로 유창한 nHibernate를 구성하는 방법 (0) | 2023.10.27 |
---|---|
Dataframe 셀 내부의 목록을 별도의 행으로 폭발시키는 방법 (0) | 2023.10.27 |
분리 범위 및 ng-모델이 포함된 지침 (0) | 2023.10.27 |
"림라프"가 무슨 뜻인지 아는 사람? (0) | 2023.10.27 |
가장 유용한 사용자 제작 C마크로스(GCC에서도 C99)? (0) | 2023.10.27 |