Today, I spent some time helping a partner of mine trying to figure out how to enable and use the CakePHP console in Mac OS + XAMPP (Mac OS version of course), so, after searching on the internet what was going on, I realized there was a problem with the unix_socket for MySQL because Mac OS didn’t recognize this parameter automatically, so here is how I solved this issue, I hope this help you a lot.
Problem
CakePHP Database connection “Mysql” is missing, or could not be created
Error: Database connection "Mysql" is missing, or could not be created. #0 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Model/Datasource/DboSource.php(260): Mysql->connect() #1 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Model/ConnectionManager.php(105): DboSource->__construct(Array) #2 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/Command/Task/ModelTask.php(927): ConnectionManager::getDataSource('default') #3 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/Command/Task/ModelTask.php(864): ModelTask->getAllTables('default') #4 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/Command/Task/ModelTask.php(954): ModelTask->listAll('default') #5 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/Command/BakeShell.php(150): ModelTask->getName('default') #6 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/Shell.php(437): BakeShell->all() #7 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/ShellDispatcher.php(207): Shell->runCommand('all', Array) #8 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/ShellDispatcher.php(66): ShellDispatcher->dispatch() #9 /Applications/XAMPP/xamppfiles/htdocs/projects/site/lib/Cake/Console/cake.php(49): ShellDispatcher::run(Array) #10 {main}
Solution (in Mac OSX + XAMPP)
Adding the MySQL socket to YOUR_SITE/app/Config/database.php
'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock'
This is how my database.php file looks like:
class DATABASE_CONFIG { public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'my_user', 'password' => 'my_password', 'database' => 'my_database', 'prefix' => '', 'unix_socket' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock' //'encoding' => 'utf8', ); public $test = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'user', 'password' => 'password', 'database' => 'test_database_name', 'prefix' => '', //'encoding' => 'utf8', ); }
This is link to stack overflow where I found more details about it: http://stackoverflow.com/questions/19280245/cakephp-database-connection-mysql-is-missing-or-could-not-be-created
That’s it for today, remember: be happy with your code!