CakePHP Bake Shell Error: Connection to Mysql Database Missing or Cannot Be Created

I have a problem with baking.
I read the previous answers to similar questions, but the solutions do not seem to apply here.

I cannot bake because the error received: Database connection "Mysql" is missing, or could not be created

If I run which php , PHP, this reading is the correct path in MAMP.

If I check the PDO modules:

 php -i | grep "PDO" PDO PDO support => enabled PDO drivers => sqlite, pgsql, mysql PDO Driver for MySQL => enabled PDO Driver for PostgreSQL => enabled PDO Driver for SQLite 3.x => enabled 

My application (or what I have completed on it so far) has no problems connecting to the database.

All answers around the web point on PDO are not included or the wrong path for PHP, but none of them apply in my case.

+7
command-line-interface php pdo cakephp cakephp-bake
source share
7 answers

The username / password may be incorrect or the name may be incorrect. I once had a database (name) starting with a space.

You can check the database connection using simple PHP, see .

+6
source share

Another solution (Mac and MAMP) is to upgrade the connection to the HOST database. I specified localhost and received this error message. When I upgraded the host to 127.0.0.1, the cake was able to establish a connection.

The symlink method described by cfkane should also fix the problem.

+5
source share

Finally I found out what the problem is, at least for me: In database.php, I pointed out:

 'encoding' => 'utf-8' 

then:

 'encoding' => 'utf8' 

will be much better!

To save time for users, I suggest that the exception handler can display the full error message from the PDO. Here is my patch:

 --- a/lib/Cake/Error/exceptions.php +++ b/lib/Cake/Error/exceptions.php @@ -378,7 +378,7 @@ class MissingDatabaseException extends CakeException { */ class MissingConnectionException extends CakeException { - 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"; public function __construct($message, $code = 500) { if (is_array($message)) { 

Result:

 [default] > Error: Database connection "Mysql" is missing, or could not be created: SQLSTATE[42000] [1115] Unknown character set: 'utf' #0 /usr/local/share/cakePHP/cakephp/lib/Cake/Model/Datasource/DboSource.php(262): Mysql->connect() 
+3
source share

I had this problem when using MAMP on macOS.

On the command line, I had to run this sudo

sudo mkdir / var / mysql

Then this

sudo ln -s / Applications / MAMP / tmp / mysql / mysql.sock / var / mysql / mysql.sock

Then, when I started the team to bake the cake again, everything worked.

Found here: http://www.mojowill.com/developer/quick-tip-cakephp-baking-and-mamp/

+2
source share

I ran into the same problem, tested PDO support in the same way, same result.

The following script (which I wrote) can help ensure that our settings are in order:

 <?php include("../new-project/app/Config/database.php"); $config= new DATABASE_CONFIG(); $name = 'default'; $settings=$config->{$name}; $dsn = 'mysql:dbname='.$settings['database'].';host='.$settings['host']; $user = $settings['login']; $password = $settings['password']; try { $dbh = new PDO($dsn, $user, $password); echo "Connection succeeded with dsn: ". $dsn . "\n"; $sql = 'SELECT id, title FROM posts'; echo "Here is the contents of the table `posts:"; foreach ($dbh->query($sql) as $row) { print $row['id'] . "\t" . $row['title'] . "\n"; } } catch (PDOException $e) { echo 'PDO error: ' . $e->getMessage(); } ?> 

And it works great:

 mich@dennet :~/www/learn/cakePHP/tools$ php test-pdo.php Connection succeeded with dsn: mysql:dbname=test;host=localhost Here is the contents of the table `posts:1 The title 3 Title strikes back 4 Once again is back 

FYI, here is the version information:

 mich@dennet :~/www/learn/cakePHP/tools$ php --version PHP 5.4.9-4ubuntu2.3 (cli) (built: Sep 4 2013 19:32:25) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies with Xdebug v2.3.0dev, Copyright (c) 2002-2012, by Derick Rethans 

Will there be a problem with the paths? Here is my baked interaction:

 mich@dennet :~/www/learn/cakePHP/new-project$ /usr/local/bin/cake -app /home/mich/www/learn/cakePHP/new-project/app bake Welcome to CakePHP v2.4.1 Console --------------------------------------------------------------- App : app Path: /home/mich/www/learn/cakePHP/new-project/app/ ... What would you like to Bake? (D/M/V/C/P/F/T/Q) > m --------------------------------------------------------------- Bake Model Path: /home/mich/www/learn/cakePHP/new-project/app/Model/ --------------------------------------------------------------- Use Database Config: (default/forbaking) [default] > Error: Database connection "Mysql" is missing, or could not be created. #0 /usr/local/share/cakePHP/cakephp/lib/Cake/Model/Datasource/DboSource.php(262): Mysql->connect() #1 /usr/local/share/cakePHP/cakephp/lib/Cake/Model/ConnectionManager.php(107): DboSource->__construct(Array) #2 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/Command/Task/ModelTask.php(927): ConnectionManager::getDataSource('default') #3 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/Command/Task/ModelTask.php(864): ModelTask->getAllTables(NULL) #4 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/Command/Task/ModelTask.php(953): ModelTask->listAll(NULL) #5 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/Command/Task/ModelTask.php(205): ModelTask->getName() #6 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/Command/Task/ModelTask.php(93): ModelTask->_interactive() #7 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/Command/BakeShell.php(111): ModelTask->execute() #8 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/Shell.php(435): BakeShell->main() #9 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/ShellDispatcher.php(210): Shell->runCommand(NULL, Array) #10 /usr/local/share/cakePHP/cakephp/lib/Cake/Console/ShellDispatcher.php(68): ShellDispatcher->dispatch() #11 /usr/local/share/cakePHP/cakephp/app/Console/cake.php(37): ShellDispatcher::run(Array) #12 {main} 

I also tried:

 mich@dennet :/usr/local/share/cakePHP/cakephp$ app/Console/cake bake 

without any success.

Now I suspect that the data source itself ...

NTN

Michelle

0
source share

Just to help Ubuntu users: I had the same error on my ubuntu 13.10 machine with the latest xampp downloaded directly from apachefriends. In summary:

Find the socket that mysqld creates for the connection programs:

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

add it to your cakePHP database configuration file (cakePHP) /app/Config/database.php

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

For me, this finally led to the fact that my cake commands could be executed without "Error: connection to the" Mysql "database is missing or could not be created.".

0
source share

change login => 'to the user created when configuring the database. Just make sure that the db configuration reflects exactly the same parameters that are used when creating the database, and everything should be in order.

0
source share

All Articles