Nasıl CakePHP fırında mysql.sock bulmak ve Mac OSX üzerinde mAmp kullanırken MySQL tanımak alabilirim?

9 Cevap php

Şu anda "Başlangıç ​​CakePHP'ye: Acemi From Professional" okuyorum David Golding tarafından. Bir noktada ben CLI-komuta "kek fırında" kullanmak zorunda, ben hoşgeldin ekranı olsun ama ben pişirmeye çalıştığınızda, örneğin Bir Kontrolör I aşağıdaki hata iletilerini alabilirsiniz:

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

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

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

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

Yerine MAMP kullanan biri - Ben hata iletileri php yani varsayılan osx mysql-soket yanlış mysql-soket, erişmeye çalışıyor ile ilgisi olduğunu sanıyorum. Dolayısıyla ben UNIX mysql-soket (:/ Uygulamalar / MAMP / tmp / mysql / mysql.sock) bağlanmak için benim veritabanı yapılandırmaları değiştirebilirsiniz:

class DATABASE_CONFIG {

    var $default = array(
        'driver' => 'mysql',
        'connect' => 'mysql_connect',
        'persistent' => false,
        'host' =>':/Applications/MAMP/tmp/mysql/mysql.sock', // UNIX MySQL-socket
        'login' => 'my_user',
        'password' => 'my_pass',
        'database' => 'blog',
        'prefix' => '',
    );

}

Ama yeni soket ile aynı hata iletileri alıyorum:

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

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

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

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

Yerine localhost bu soket kullanılarak Ayrıca, ben bu kadar hoşgeldin ekranında göstermek mAmp UNIX soket kullanmak bile, CakePHP, veritabanı bağlantısını kaybeder.

Herhangi bir işe fırında alabilirsiniz nasıl fikir?

-- Edit 1 --

Sana Bana yardım ettiğin için teşekkür ederim çocuklar! :)

Ben bir sorun my.cnf TCP / IP isteğine dinlemek için MySQL almak için düzenlemek için nerede bulmaktan var. TCP / IP belirtilen bulabilirim yalnızca paragraf şöyledir:

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (via the "enable-named-pipe" option) will render mysqld useless!
# 
#skip-networking

Bu da benim niyet karşısında tamamen hangi TCP / IP kapatmak için izin verir. Eğer iyi olurdu daha ayrıntılı olabilir, eğer ben, size tavsiye ne hakkında gitmek nasıl bilmiyorum. Ben bu konularda toplam n00b duyuyorum: S

Reg. Yerel bir soket bağlantı: I host-parametre, aynı sonucu öncü kolon çıkarıldı.

9 Cevap

Görünüyor, gerçek bir IP adresi ve bir UNIX soket bağlanmaya çalışıyor gibi hata itibaren, görünüyor:

 '/Applications/MAMP/tmp/mysql/mysql.sock:3306'

Bu yanlış soket, bir bağlantı noktası ekleme oluyor.

Yani, ben ilk (my.cnf uygun bölümü düzenlemek), TCP / IP isteklerini dinlemek için MySQL yapılandırmak deneyin ve yerine soket 127.0.0.1 sağlayan denemek istiyorum.

Eğer won't scroll down:

, CakePHP düzeyde 'localhost' için database.php üzerinde değişiklik ana düzeltmek ve soket adı '/ Uygulamalar / MAMP / tmp / mysql / mysql.sock' ayarlanmış değeri olan bir liman yönergesi eklemek için

CakePHP'ye 2.0 kullanırken bu sorun haline çalışan herkes için: Benim için yukarıdaki veritabanı yapılandırma dosyaları hile yapmadım. : Benim için çalıştı 'unix_socket' özelliği olsa da, bulundu

<?php
class DATABASE_CONFIG {

    public $default = array(
        'datasource' => 'Database/Mysql',
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'unix_socket' => '/tmp/mysql.sock',
        'login' => 'xxx',
        'password' => 'xxx',
        'database' => 'xxx',
        'encoding' => 'UTF8',
        'prefix' => ''
    );

}

MAmp ve Kek CLI kullanırken, aynı problem vardı. Ben CakePHP 1.1xxx ve mAmp 1.7 koşuyorum.

Sorun MySQL soket bulunabilir olamaz,: D

Açık Terminal ve aşağıdakileri girin:

my-macbook:~ chris$ php -i | grep mysql.default_socket
mysql.default_socket => no value => no value
my-macbook:~ chris$ php -i -c /Applications/MAMP/conf/php5 | grep mysql.default_socket
mysql.default_socket => /Applications/MAMP/tmp/mysql/mysql.sock => /Applications/MAMP/tmp/mysql/mysql.sock

Yakalamak açıkça kendi yapılandırma dosyasını (mAmp adlı okuyun) php ikili yolunu vermeden, mysql.default_socket ayarlanmış olmasıdır.

Ben ne olursa olsun benim veritabanı yapılandırmasını değiştirmek için gerek yoktu ki kullanma.

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

Ben MAMP ile aynı sorun vardı ve yukarıdaki komutu ile sabit. Ben bu komutu bilgisayarınızı yeniden başlatmanız her zaman çalıştırmak zorunda düşünüyorum. Belki de bunu yapmak için daha iyi bir yoldur, ama ben clix.app ile kullanmak, bu yüzden genellikle oldukça hızlı. Ayrıca, localhost için ana değiştirmek.

Evet sanırım, benzer bir sorunu vardı işaret soket: PortNo Vinko işe yarayabilecek önerdiği gibi - bir IP adresi kullanmak ise ancak / localhost iyi olacak.

Bu benim için çalıştı:

class DATABASE_CONFIG
{
        public $default  =       array(
                'driver'                =>      'mysql',
                'persistent'    =>      false,
                'host'                  =>      'localhost',
                'login'                 =>      'account',
                'password'              =>      'password',
                'database'              =>      'database',
                'prefix'                =>      '',
                'port'                  =>      '/Applications/MAMP/tmp/mysql/mysql.sock'
        );
}

Güvenlik duvarınızı yapılandırmak deneyin ... Bu benim için böyleydi!

Ayrıca fırında / tmp mysql.sock arıyor, bir sembolik bağlantı yapabilirsiniz

gibi bu:

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

Şerefe, Ebbot.

Benim için, ben MAMP varsayılan MySQL portunu kullanarak değildi çünkü, ana bilgisayardaki bağlantı noktasını ayarlamak için unuttum.

yani MySQL port 8889 ise, host ayarlandığında localhost:8889.