2015-05-07 3 views
0

Я новичок, только начинаю изучать Zend Framework 2. Когда я следую учебнику http://framework.zend.com/manual/2.3/en/user-guide/database-and-models.html, у меня есть проблема с базой данных find.Ошибка базы данных Zend Framework 2

Я обнаружил, что он может подключаться к базе данных localhost, но не может найти какую-либо базу данных.

Connect Error: SQLSTATE[HY000] [1049] Unknown database 'db_vote'

Он может найти базу данных «mysql». Но не могу найти новую таблицу, если я создам новую таблицу внутри «mysql».

Другое дело, что я изменил свой пароль root в phpmyadmin, но в zf2, если я перейду на новый пароль, он сказал, что доступ запрещен, но он работает со старым паролем.

Похоже, что zend подключается к другому «локальному хосту»? Странные мысли ... Кто-нибудь может мне помочь? Заранее спасибо.

Код в module.php:

public function getServiceConfig(){ 
    return array(
     'factories' => array(
      'Album\Model\AlbumTable' => function($sm){ 
       $tableGateway = $sm->get('AlbumTableGateway'); 
       $table = new AlbumTable($tableGateway); 
       return $table; 
      }, 
      'AlbumTableGateway' => function($sm){ 
       $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); 
       $resultSetPrototype = new ResultSet(); 
       $resultSetPrototype->setArrayObjectPrototype(new Album()); 
       return new TableGateway('album_zend', $dbAdapter, null, $resultSetPrototype); 
      }, 
     ), 
    ); 
} 

global.php:

return array(
'db' => array(
    'driver'  => 'Pdo', 
    'dsn'   => 'mysql:dbname=db_vote; host=localhost', 
    'driver_options'=> array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''), 
), 
'service_manager' => array(
    'factories'  => array(
     'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', 
    ), 
), 
); 

local.php:

return array(
'db' => array(
    'username' => 'root', 
    'password' => 'xxxxxxx', 
), 
); 
+0

так где ваш конфигурационный файл настроек? где ваш код? – Alex

+0

Вы создали базу данных под названием 'db_vote'? Вы должны иметь возможность сделать это с помощью phpmyadmin –

+0

привет Тиму, да, я создаю базу данных, называемую db_vote. Я даже пробовал каждую базу данных в localhost, и все это показывало неизвестную базу данных. Только mysql может быть достигнут – kim

ответ

0

Проблема:

корень @ локальный

корень @%

может быть двух разных пользователей.

Если вы заглянете в пользовательскую таблицу в базе данных mysql, вы заметите более одного пользователя root. Пользователь для веб-приложения может отличаться от того, который вы использовали для подключения через консоль.

Как исследовать его:

Проверьте, какой пользователь подключен через консоль (или любой другой инструмент вы использовали):

SELECT USER(); 

Убедитесь, что вы либо придерживаться одного пользователя (корень @ локальный, например) или убедитесь, что пользователь веб-приложение имеет правильные привилегии:

USE mysql; 
SELECT * FROM db; 

Всякий раз, когда вы меняете ПОИ vileges не забывают их смывать:

FLUSH PRIVILEGES; 
+0

привет, я проверил, что у меня только один root @ localhost, у меня нет другого пользователя root. И я также проверил таблицу db в mysql, настройки привилегий верны.Есть ли вероятность, что один локальный хост может иметь две базы данных? Это так странно, что я изменил пароль root, но из zf2 я могу получить доступ только к базе данных по старому паролю – kim

Смежные вопросы