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

Если вам абсолютно нужна локальная копия файла, вам нужно будет открыть InputStream копию содержимого в локальный файл, в котором вы знаете путь, а затем перейти оттуда. Sidenote: Guava ByteStreams#copy - это простой способ выполнить это.

Конечно, этот файл больше не поддерживается исходным источником Uri, поэтому я не думаю, что это то, что вы хотите. Вместо этого вы должны работать с API-интерфейсом Uri. Взгляните на Storage Access Framework

Изменить

Вот как вы можете получить InputStream из вашего Uri

InputStream inputStream = getContentResolver().openInputStream(uri);

29
задан hg8 11 May 2015 в 12:55
поделиться

18 ответов

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

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

0
ответ дан Ben Caine 11 May 2015 в 12:55
поделиться

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

0
ответ дан aexl 11 May 2015 в 12:55
поделиться

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

: «115]

public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => '127.0.0.1',
                'login' => 'user',
                'password' => 'password',
                'database' => 'database-name',
                'prefix' => '',
                'encoding' => 'utf8',
        );
18
ответ дан enagra 11 May 2015 в 12:55
поделиться

Я заметил, что вы спрашивали об этом год назад, и, скорее всего, уже решили бы это. Тем не менее, для тех, кто сталкивается с теми же проблемами при попытке установить CakePHP на XAMPP, все, что вам нужно сделать, это изменить «login» на «root», то есть по умолчанию для входа в XAMPP, и оставить «password» как «», т.е. пустой. Полный код в вашем файле 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',
);

Вот и все.

5
ответ дан Brajinder Singh 11 May 2015 в 12:55
поделиться

Я попытался объединить код из примера 2 из http://php.net/manual/en/pdo.connections.php в /app/View/Pages/home.ctp. Мне пришлось исправить аргументы конструктора PDO и изменить имя таблицы в запросе. Код примера 2 возвратил ошибку «Ошибка !: Не удалось найти драйвер». Основываясь на ответе короля 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

.
0
ответ дан jocassid 11 May 2015 в 12:55
поделиться

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

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

apt-get install php5-mysql
2
ответ дан Simon East 11 May 2015 в 12:55
поделиться

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

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

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
8
ответ дан Rashad 11 May 2015 в 12:55
поделиться

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

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

user@host /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 » отсутствует или не может быть создан. ".

0
ответ дан FaustoW 11 May 2015 в 12:55
поделиться

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

0
ответ дан Tyler Collier 11 May 2015 в 12:55
поделиться

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

0
ответ дан paulleephp 11 May 2015 в 12:55
поделиться

Отредактируйте php.ini и добавьте:

extension=php_pdo_mysql.dll 

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

10
ответ дан Simon East 11 May 2015 в 12:55
поделиться

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

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

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

protected 

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

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

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

[110]

заменена на эту:

protected 

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

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

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

[110]

заменена на эту:

[111]

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

messageTemplate = "Database connection \"%s\" is missing, or could not be created:\n %s";

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

messageTemplate = 'Database connection "%s" is missing, or could not be created.';

заменена на эту:

protected 

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

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

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

[110]

заменена на эту:

[111]

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

messageTemplate = "Database connection \"%s\" is missing, or could not be created:\n %s";

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

2
ответ дан tashuhka 11 May 2015 в 12:55
поделиться

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

0
ответ дан Dragonman117 11 May 2015 в 12:55
поделиться

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

public $useDbConfig = 'local';

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

0
ответ дан Tanvir Gaus 11 May 2015 в 12:55
поделиться

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

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

5
ответ дан Scott 11 May 2015 в 12:55
поделиться

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

'unix_socket' => '/Applications/MAMP/tmp/mysql/mysql.sock',
47
ответ дан Domingo C. 11 May 2015 в 12:55
поделиться

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

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

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

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

0
ответ дан Chuy 11 May 2015 в 12:55
поделиться

Потому что в торт-бейке для подключения к базе данных используется сокет 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’
);

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

0
ответ дан Quy Le 11 May 2015 в 12:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: