Подтвердить что ты не робот

Соединение с базой данных CakePHP "Mysql" отсутствует или не может быть создано

Было несколько других сообщений об этом, но ни один из ответов не работал у меня.

Когда я перехожу на страницу CakePHP на моем локальном компьютере, есть одна ошибка:

Cake не может подключиться к базе данных. Подключение к базе данных "Mysql" отсутствует или не может быть создан.

Когда я запускаю этот полезный код в моем home.ctp, я получаю следующий ответ:

Ошибка!: SQLSTATE [42000] [1049] Неизвестная база данных 'test'

Однако мой Users/Ben/Sites/myapp/app/Config/database.php выглядит так (я установил MAMP для поиска корня документа в Users/Ben/Sites):

<?php
class DATABASE_CONFIG {

    public $default = array(
        'datasource' => 'Database/Mysql',
        'persistent' => false,
        'host' => 'localhost',
        'login' => 'Ben',
        'password' => 'mypass',
        'database' => 'CV',
    );
}

Я создал пользователя mysql с именем Ben с паролем mypass и создал под ним базу данных под названием CV. Более того, я не могу найти ссылку на базу данных test где угодно. Помощь?

4b9b3361

Ответ 1

Что для меня в конце концов было то, что я создал таблицу в моей базе данных, но в ней не было данных.

Чтобы CakePHP распознал соединение MySql, в нем должна быть таблица с данными.

Ответ 2

Попробуйте добавить сокет:

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

Ответ 3

Альтернативой unix_socket (особенно для людей OS X) является замена localhost на 127.0.0.1

Будет следующим:

public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => '127.0.0.1',
                'login' => 'user',
                'password' => 'password',
                'database' => 'database-name',
                'prefix' => '',
                'encoding' => 'utf8',
        );

Ответ 4

Изменить php.ini и добавить:

extension=php_pdo_mysql.dll 

Затем перезапустите веб-сервер

Ответ 5

На Mac, используя MAMP в качестве платформы разработки, для торта правильное решение использует решение Domingo Casarrubio.

Добавьте параметр unix_socket в конфигурацию базы данных.

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',

Ответ 6

Эта ошибка также может быть вызвана, если ваш пользователь подключаемой базы данных не имеет соответствующих привилегий. Я считаю, что вам нужен минимум INSERT, SELECT, UPDATE и DELETE.

Всегда проверяйте имя пользователя/пароль и привилегии пользователя сначала, так как CakePHP, скорее всего, даст неопределенную ошибку подключения к базе данных.

Ответ 7

Я заметил, что вы спросили об этом год назад, и, скорее всего, сейчас это решило бы. Тем не менее, для тех, кто сталкивается с теми же проблемами при попытке установить CakePHP на XAMPP, все, что вам нужно сделать, это изменить "login" на "root", то есть на вход по умолчанию XAMPP, и оставить пароль "как", т.е. пустой. Полный код в файле database.php должен выглядеть следующим образом:

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'ckblog',//replace with your own database name
    'prefix' => '',
    //'encoding' => 'utf8',
);

Что это.

Ответ 8

У меня была такая же проблема, и в итоге выяснилось, что это было вызвано тем, что CakePhp не признал, что я использовал пользователя с паролем, даже если этот пользователь был создан в PHPMyAdmin. Мне пришлось использовать пользовательский "root" без пароля.

Я нашел это после внесения следующего изменения в файл /lib/Cake/Error/exceptions.php.

Исходная строка:

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

Это даст вам причину проблемы, чтобы вы могли правильно изменить причину.

Ответ 9

Возможно, поддержка mysql PDO отсутствует.

как root (или используя sudo):

apt-get install php5-mysql

Ответ 10

Возможно, вам понадобится создать таблицу в вашем php файле... Откройте phpMyAdmin и проверьте, чтобы они были CV базы данных.

Ответ 11

Просто, чтобы помочь пользователям Ubuntu: У меня была такая же ошибка в моей машине ubuntu 13.10 с новейшим xampp downlaoded непосредственно от apachefriends. Пробовал большую часть материала в каждом сообщении, которое я мог найти об этой ошибке, но не о специфических для Mac материалах. В конце концов, исправление оказалось таким же, как и выбранный здесь ответ:

Найти сокет, который mysqld создает для программ для подключения:

[email protected] /opt$ find . -name mysql.sock
/opt/lampp/var/mysql/mysql.sock

добавьте его в свой файл конфигурации базы данных cakePHP (cakePHP)/app/Config/database.php

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

Для меня это, наконец, привело к тому, что мои команды торта могли исполняться без "Ошибка: соединение с базой данных" Mysql "отсутствует или не может быть создано.".

Ответ 12

Это ваша модель. Откройте это и должна быть следующая строка

public $useDbConfig = 'local';

Это перезаписывает глобальную конфигурацию и возвращает ее на локальный

Ответ 13

Я попытался сплайсировать код из примера 2 http://php.net/manual/en/pdo.connections.php в /app/View/Pages/home.ctp. Мне пришлось исправить аргументы конструктора PDO и изменить имя таблицы в запросе. Код примера 2 вернул ошибку "Ошибка!: не удалось найти драйвер". Основываясь на ответе King Jk, я пытался изменить php.ini, когда я начал задаваться вопросом, где может жить php_pdo_mysql.so. http://php.net/pdo_mysql показал, как он был скомпилирован как часть PHP через параметр --with-pdo-mysql для настройки. Исправлена ​​проблема с перекомпиляцией. Примечание. Я работаю над системой Ubuntu 12.10 с PHP 5.5.9 и Apache Webserver 2.4.6.

Ответ 14

В моем случае это было потому, что базы данных не существовало. Я ожидал, что запуск ./app/Console/cake schema create создаст его, но это не так. Создание его с помощью create database <database name> в mysql сделало трюк (хотя я уже назначил привилегии).

Ответ 15

У меня была эта проблема, так как обновление до OSX Yosemite и вставка следующей строки сделали трюк для меня:

 'unix_socket' => '/tmp/mysql.sock'

Ответ 16

Я боролся с этим весь уик-энд и, наконец, решил. Оказывается, что php.ini указывает на несуществующий "расширительный каталог". Создайте файл phpinfo() и посмотрите на значение этого поля: extensions_dir

Я заметил, что в установленной папке mamp php есть папка no-debug-non-zts-20131226, которая отличается от значения, указанного в phpinfo(). Я сделал клонирование этой папки и изменил имя на значение phpinfo(). Возможно, вы можете изменить файл php.ini, но я не хотел.

Я не знаю, решила ли вы свою проблему, но я публикую это, потому что моя проблема была другой, и google взял меня сюда, поэтому я надеюсь помочь будущим гуглерам, имеющим аналогичную проблему.

Надеюсь, что это поможет.

Ответ 17

Потому что выпечка торта использует сокет unix для подключения к базе данных
так что вам нужно добавить unix_socket для строки подключения.
Вы должны подтвердить местоположение, в котором хранится mysql.sock в WAS
Пример: в моем случае я использую xampp на MACOS 10.11
(изменить файл Config/database.php)

public $default = array(
  ‘datasource’ => ‘Database/Mysql’,
  ‘persistent’ => false,
  ‘host’ => ‘localhost’,
  ‘login’ => ‘root’,
  ‘password’ => ‘root’,
  ‘database’ => ‘cakephp’,
  ‘encoding’ => ‘utf8’,
  ‘unix_socket’ => ‘/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock’
);

Наконец, он работает для меня!

Ответ 18

Если вы используете Godaddy (или любой другой общий хостинг, если на то пошло), они могут ограничивать исходящие соединения только с портами 80 и 443.