CakePHP: MySQL veritabanı erişemiyor

5 Cevap php

CakePHP yeniyim ve sadece yapılveırma sürecinde çalıştırıyorum, ama Kek benim MySQL veritabanına erişemiyor neden stumped. Kek bilgi sayfası benim tmp dizini FileEngine (bu ne demek bilmiyorum) önbelleğe alma için kullanılan, ve benim veritabanı yapılveırma dosyası mevcut olduğu, yazılabilir, ancak CakePHP veritabanına bağlanamıyor diyor.

İşte benim Kurulum detaylar:

  • PHP 5.3 (Snow Leopard üzerinde önceden yüklenmiş)
  • MySQL 5.1.40 64-bit
  • CakePHP 1.2.4.8284

İşte geçti adımlar şunlardır:

  • Cake_blog adında bir MySQL şema oluşturuldu
  • Cake_blog_user adında bir MySQL kullanıcı Oluşturuldu
  • Cake_blog @ localhost ve cake_blog @% üzerinde uygun izinleri cake_blog_user Verilen
  • Database.php için database.php.default dosyasını kopyaladığınız ve uygun olarak veritabanı bağlantı bilgileri düzenledikten

İşte database.php gelen ilgili yapılveırma verileri:

    var $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'cake_blog_user',
        'password' => 'cake_blog_password',
        'database' => 'cake_blog',
        'prefix' => '',
    );

Ben burada bir şey eksik? Ben de veritabanı bağlantısını sınar hemen önce I / kek / libs / view / sayfalar / home.ctp dosyası içine bir echo mysql_error(); eklerseniz, görüntülenen hata "Böyle bir dosya ya da dizin yok olduğunu belirtmek gerekir. " Ben ne hakkında konuştuğunu dosya ya da dizin hiçbir fikrim yok.

Teşekkürler!

5 Cevap

Bu soket ise, sadece aşağıdaki yansıtmak için / etc / php.ini düzenleme

pdo_mysql.default_socket=/tmp/mysql.sock

ve

mysql.default_socket = /tmp/mysql.sock

Ben de aşağıdakileri yapabilirsiniz inanıyorum

<?php
    public $default = array(
        'driver' => 'mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'cake_blog_user',
        'password' => 'cake_blog_password',
        'database' => 'cake_blog',
        'prefix' => '',
        'port' => '/tmp/mysql.sock',            
    )
?>

Eğer üretim sunucusunda canlı gittiğinizde bu yapıyor anlamına gelebilir size database.php dosyasını düzenlemeniz gerekir.

Ne genellikle o beni ısırması MySQL 'unix soket aracılığıyla bağlamak' ve '127 .0.0.1 'TCP port aracılığıyla bağlanmak' olarak 'localhost' düşünüyor o. (En azından mac) XAMPP gibi şeyler ile unix soket dosya yoktur. Just use 127.0.0.1 yerine.

var $default = array(
    'driver' => 'mysql',
    'persistent' => false,
    'host' => '127.0.0.1',
    'login' => 'cake_blog_user',
    'password' => 'cake_blog_password',
    'database' => 'cake_blog',
    'prefix' => '',
);

Her zaman çalışmak gerekir.

Teşekkürler bana doğru yönde işaret için herkes. Mysql.sock dosyası /tmp/mysql.sock yerine /var/mysql/mysql.sock onun varsayılan konumu taşındı. Bu sorunu giderildi yansıtmak için php.ini dosyasını düzenleme.

Lütfen phpinfo kontrol ve listelenen soketi kullanın. Bu benim için çalıştı.