此外还有其他一些帖子,但没有一个答案似乎对我有用。
当我导航到本地计算机上的CakePHP页面时,出现一个错误:
Cake无法连接到数据库。数据库连接 “Mysql”丢失,或无法创建。
当我在home.ctp中运行this helpful code时,我收到以下回复:
错误!:SQLSTATE [42000] [1049]未知数据库'test'
但是,我的Users/Ben/Sites/myapp/app/Config/database.php
看起来像这样(我将MAMP设置为在Users / Ben / Sites中查找文档根目录):
<?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
数据库。帮助
答案 0 :(得分:47)
尝试添加套接字:
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
答案 1 :(得分:18)
替代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',
);
答案 2 :(得分:10)
修改php.ini
并添加:
extension=php_pdo_mysql.dll
然后重新启动您的网络服务器
答案 3 :(得分:8)
在Mac上,使用MAMP作为开发平台,正确的解决方案是使用Domingo Casarrubio解决方案。
将unix_socket
参数添加到数据库配置中。
'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
答案 4 :(得分:5)
如果您的连接数据库用户没有适当的权限,也可能导致此错误。我相信你只需要最少的INSERT,SELECT,UPDATE和DELETE。
首先检查用户名/密码和用户权限,因为CakePHP很可能会给出模糊的数据库连接错误。
答案 5 :(得分:5)
我注意到你一年前曾问过这个问题,而且很可能现在已经解决了这个问题。但是,对于那些在尝试在XAMPP上安装CakePHP时遇到相同问题的人,您所要做的就是将“登录”更改为“root”,即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',
);
就是这样。
答案 6 :(得分:2)
可能缺少mysql PDO支持。
以root身份(或使用sudo):
apt-get install php5-mysql
答案 7 :(得分:2)
我遇到了同样的问题,最终发现它是由CakePhp不接受我使用了密码的用户引起的,即使该用户是在PHPMyAdmin中创建的。我不得不使用没有密码的用户“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";
这将为您提供问题的原因,以便您可以正确更改原因。
答案 8 :(得分:0)
系统配置:
来自CAKE的错误消息:
数据库连接“ Mysql”丢失或无法创建。
使用https://stackoverflow.com/a/24722976/5025060上的答案来增强错误消息
数据库连接“ Mysql”丢失或无法创建:未启用所选驱动程序
我的问题是PHP和SQL之间没有安装“连接器”。解决方案是:
dnf install php-mysqlnd
这允许PHP按照CAKE的database.php配置文件中的指定连接到数据库。
答案 9 :(得分:0)
如果您使用Godaddy(或任何其他共享主机),他们可能只限制到端口80和443的传出连接。
答案 10 :(得分:0)
因为,蛋糕烘烤使用unix socket连接到数据库
所以你需要为连接字符串添加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’
);
最后,这对我有用!
答案 11 :(得分:0)
整个周末我一直在努力解决这个问题,最终解决了这个问题。事实证明,php.ini指向一个不存在的“扩展目录”。创建一个phpinfo()文件并查看该字段的值:
我注意到在mamp php安装文件夹中有一个no-debug-non-zts-20131226文件夹,它与phpinfo()中显示的值不同。我做的是克隆此文件夹并将名称更改为phpinfo()的值。可能你可以修改php.ini文件,但我不想。
我不知道你是否解决了你的问题,但是我发布这个是因为我的问题不同而谷歌把我带到了这里,所以我希望能帮助未来的谷歌有一个类似的问题。
希望这有帮助。
答案 12 :(得分:0)
自从升级到OSX Yosemite以来,我遇到了这个问题,插入以下行就是我的诀窍:
'unix_socket' => '/tmp/mysql.sock'
答案 13 :(得分:0)
就我而言,这是因为数据库不存在。我希望运行./app/Console/cake schema create
会创建它,但事实并非如此。在mysql中使用create database <database name>
创建它可以解决问题(虽然我已经分配了权限)。
答案 14 :(得分:0)
我尝试将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展示了如何通过配置的--with-pdo-mysql选项将其编译为PHP的一部分。重新编译修复了我的问题。注意我正在使用PHP 5.5.9和Apache Webserver 2.4.6的Ubuntu 12.10系统
答案 15 :(得分:0)
这是你的模特。打开它,必须有以下行
public $useDbConfig = 'local';
这会覆盖全局配置&amp;将其设置回本地
答案 16 :(得分:0)
只是为了帮助 Ubuntu 用户: 我在我的ubuntu 13.10机器上遇到了同样的错误,最新的xampp直接从apachefriends下载。在我发现的关于这个错误的每个帖子中都尝试了大部分内容,但不是特定于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“缺失,或者无法创建。”。
答案 17 :(得分:0)
您可能需要在php文件中创建表格...打开phpMyAdmin并检查以确保它们的数据库CV存在。
答案 18 :(得分:0)
最后,我在我的数据库中创建了一个表,但其中没有数据。
为了让CakePHP能够识别MySql连接,必须有一个包含数据的表。