2016-12-29 6 views
1

Итак, у меня есть 3 контейнера докеров, один с PHP + PhalconPHP, один с MySQL и другой с веб-сервером. Теперь в моей системе хоста я могу подключиться к MySQL в контейнере Докера, и я также могу соединиться с PDO, используя следующий кодОшибка подключения phalcon, Docker MySQL

new PDO('mysql:host=mysql;port=1024;dbname=database', 'root', 'password'); 

Но по какой-то причине структура Phalcon не может подключиться к базе данных MySQL с помощью config.php файл как так

return new \Phalcon\Config([ 
    'database' => [ 
     'adapter'  => 'mysql', 
     'port'  => 1024, 
     'host'  => 'mysql', 
     'username' => 'root', 
     'password' => 'password', 
     'dbname'  => 'database', 
     'charset'  => 'utf8', 
    ], 
]); 

в этом случае, по какой-то причине я получаю Can't connect to MySQL server on 'mysql' (111 "Connection refused) хотя я 100% уверен, что на самом деле может подключиться (как доказано, прежде чем с подключением PDO). Я также пробовал жестко кодировать фактический IP-адрес контейнера MySQL, но не повезло.

Любые идеи?

+0

Вы видели [это] (http://stackoverflow.com/questions/1420839/cant-connect-to-mysql-server-error-111)? Похоже. Была ли ошибка такой же, когда вы жестко закодировали IP-адрес? – Terminus

+0

@Terminus да, точно такая же ошибка и факт в том, что это не та же проблема, что и вы, поскольку я могу подключиться к ней с помощью PDO в том же файле PHP, а также подключиться к нему из моей хост-системы. –

ответ

0

Таким образом, это оказалось своего рода глупой «ошибкой», но вот решение. Видимо, когда вы используете инструменты разработчика Phalcon для разработки вашего проекта, он не инициализирует базу данных конфигурацией порта, поскольку она прямо игнорирует ее. Вы можете легко исправить это, перейдя в файл app/config/services.php и изменив услугу db, чтобы также включить конфигурацию порта.

$connection = new $class([ 
    'host'  => $config->database->host, 
    'port'  => $config->database->port, 
    'username' => $config->database->username, 
    'password' => $config->database->password, 
    'dbname' => $config->database->dbname, 
    'charset' => $config->database->charset 
]); 
Смежные вопросы