Domanda

Sto cercando di fare il Semplice applicazione controllata da ACL tutorial nel ricettario di cakephp.L'idea è:

Creazione di database

 CREATE TABLE users (
 id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, username VARCHAR(255) NOT NULL UNIQUE,
 password CHAR(40) NOT NULL,
 group_id INT(11) NOT NULL,
 created DATETIME,
 modified DATETIME
 );


 CREATE TABLE groups (
 id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 name VARCHAR(100) NOT NULL,
 created DATETIME,
 modified DATETIME
 );


 CREATE TABLE posts (
 id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 user_id INT(11) NOT NULL,
 title VARCHAR(255) NOT NULL,
 body TEXT,
 created DATETIME,
 modified DATETIME
 );

 CREATE TABLE widgets (
 id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
 name VARCHAR(100) NOT NULL,
 part_no VARCHAR(12),
 quantity INT(11)
 );

Quindi esegui il comando cake bake all, è qui che ho il problema:

Welcome to CakePHP v1.2.4.8284 Console
---------------------------------------------------------------
App : app
Path: /Applications/MAMP/htdocs/luis/app
---------------------------------------------------------------
---------------------------------------------------------------
Bake All
---------------------------------------------------------------

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2) in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 374

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 379

Warning: mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 387

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /Applications/MAMP/htdocs/luis/cake/libs/model/datasources/dbo/dbo_mysql.php on line 411
Error: Your database does not have any tables.

La configurazione del mio database è così:

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'port' => 8889,
    'login' => 'root',
    'password' => 'root',
    'database' => 'cake',
);

Quindi sto usando l'ultima versione di CakePHP (1.2.5), l'ultima versione di Mamp (1.7.2) con PHP v5...Qualcuno sa qual è il problema?

È stato utile?

Soluzione

Puoi anche spostarti utilizzando l'indirizzo IP localhost facendo

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => 'localhost',
    'port' => 8889,
    'login' => 'root',
    'password' => 'root',
    'database' => 'cake',
    'port' => '/Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock',
);

Questo perché quando si utilizza un localhost denominato, MYSQL proverà a connettersi tramite un socket locale.Specificando dove si trova il socket tramite "porta", si modifica il percorso in cui cerca il file socket.Usando 127.0.0.1 o specificando un IP di qualsiasi tipo dici a MYSQL di connettersi tramite http, che non utilizza affatto il socket.

Altri suggerimenti

Questa è la versione 2.x della configurazione del database per localhost su MAMP

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'USERNAME',
    'password' => 'PASSWORD',
    'database' => 'DATABASE',
    'encoding' => 'utf8',
    'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock'
);

Ok, ho trovato un modo per farlo, potrebbe aiutare le persone che hanno lo stesso problema:ho impostato l'host su 127.0.0.1 in modo che Cake possa connettersi ad esso.Grazie per l'aiuto.

la torta non riesce a trovare la presa.

prova a creare un collegamento simbolico da dove si trova il tuo socket, a dove Cake pensa che dovrebbe essere:

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

Ho avuto questo problema quando sono passato a CakePHP.Nella mia attuale versione MAMP 1.9.x mi assicuro semplicemente di usare 'host' => '127.0.0.1' e 'port' => 8889 (a meno che non si modifichi la porta mysql predefinita).

Funziona perfettamente per me.

Sto aiutando un amico a configurarlo su Windows.

All'interno di EasyPHP tutto funziona bene (connessione con Mysql).Quindi Cakephp utilizza PDO per connettersi al database.

Quando provi a utilizzare BAKE per generare il rilancio dei modelli:"Errore:La connessione al database "Mysql" manca o non è possibile crearla."

PHP sulla riga di comando prova a trovare php.ini all'interno della cartella Windows in modo che non possano trovare e ottenere la configurazione predefinita senza le estensioni PDO e Mysql.

Copia php.ini nella cartella WINDOWS e il programma funzionerà correttamente!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top