وحدة التحكم CakePHP (Bake) على نظام التشغيل Mac OS مع MAMP: خطأ في اتصال قاعدة البيانات

StackOverflow https://stackoverflow.com/questions/1688705

سؤال

أحاول أن أفعل تطبيق تسيطر ACL بسيط البرنامج التعليمي في كتاب الطبخ CakePhp. الفكرة هي:

صنع قواعد البيانات

 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)
 );

ثم قم بتشغيل الأمر Cake Bake All، هذا هو عندما يكون لدي المشكلة:

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.

تكوين قاعدة البيانات الخاص بي هو مثل هذا:

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

لذلك أنا أستخدم الإصدار الأخير CakePhp (1.2.5)، آخر نسخة MAMP (1.7.2) تشغيل PHP V5 ... شخص يعرف ما هي المشكلة؟

هل كانت مفيدة؟

المحلول

يمكنك أيضا الحصول على استخدام عنوان IP LocalHost من خلال القيام به

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',
);

هذا لأنه عند استخدام LocalHost Localhost MySQL سيحاول الاتصال من خلال مأخذ توصيل محلي. من خلال تحديد مكان المقبس عن طريق "منفذ"، يمكنك تغيير المسار الذي يبحث عنه ملف المقبس فيه. باستخدام 127.0.0.1 أو عن طريق تحديد عنوان IP من أي فرز أخبر MySQL للاتصال عبر HTTP، والذي لا يستخدم المقبس في الكل.

نصائح أخرى

هذه هي النسخة 2.x من تكوين قاعدة البيانات للتحليل المحلي على 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'
);

حسنا، لقد وجدت طريقة للقيام بذلك، قد يساعد الأشخاص الذين لديهم نفس المشكلة: أقوم بتعيين المضيف إلى 127.0.0.1، لذا يمكنك الكعكة الاتصال به. شكرا للمساعدة.

الكعكة لا يمكن العثور على المقبس.

حاول إجراء رابط رمزي من حيث يكون مقبسك، حيث تعتقد الكعكة أنه يجب أن يكون:

ln -s /applications/mamp/tmp/mysql/mysql.sock /tmp/mysql.sock

كان لدي هذه المشكلة عندما انتقلت إلى CakePhp. في إصدار Mamp 1.9.x الحالي الخاص بي، أنا ببساطة تأكد من استخدام "المضيف" => '127.0.0.1' و 'Port' => 8889 (ما لم تكن تغيير منفذ MySQL الافتراضي).

يعمل تماما بالنسبة لي.

أنا أساعد صديق لإعداد هذا على Windows.

داخل الاشياء easyphp كل العمل غرامة (اتصال مع mysql). لذلك cakephp استخدم PDO للاتصال بقاعدة البيانات.

عند محاولة استخدام Bake لإنشاء الطرز رفع: "خطأ: اتصال قاعدة البيانات" MySQL "مفقود، أو لا يمكن إنشاؤه."

حاول PHP على سطر الأوامر العثور على مجلد PHP.INI Inside De Windows بحيث لا يمكن العثور عليه والحصول على التكوين الافتراضي بدون امتدادات PDO و MySQL.

نسخ php.ini داخل مجلد دي ويندوز وأشياء الخبز سوف تعمل بشكل جيد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top