如何用doctrine2创建数据库? [英] How to create database with doctrine2?

查看:101
本文介绍了如何用doctrine2创建数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经通过泊坞台设置了一个新的开发环境。我有一个symfony2(2.6)应用程序,所以我想使用 app / console doctrine 方法来实现mysql数据库。



然而,当运行

  $ php app / console doctrine:database:create --if-not-exists 

我收到此错误消息:

  [Doctrine\DBAL\Exception\ConnectionException] 
驱动程序出现异常:SQLSTATE [42000] [1049]未知数据库local_api

[原则\DBAL\Driver\PDOException]
SQLSTATE [42000] [1049]未知数据库'local_api'

[PDOException]
SQLSTATE [42000] [1049]未知数据库'local_api'

确实mysql数据库不存在。我想先创建一个。这里发生了什么?



我发现了一个我们已经使用固定版本1.5。



我还发现了一个 symfony2.6问题,但在将symfony2升级到2.7.5之后也是如此。



我知道,当我将direclty连接到我的mysql数据库并运行 CREATE DATABASE local_api 时,我可以创建它们,但是我希望我的工作流通过doctrine2。



只是为了绝对地确定问题与我的数据库设置无关,我跑了:

  $ mysql --host = 10.10.10.10 --user = foo --password = bar 
mysql> CREATE DATABASE local_api;
查询OK,1行受影响(0.00秒)
mysql> Bye
$ php app / console doctrine:database:create --if-not-exists
名为default的连接的数据库local_api已经存在。跳过。

然后我可以使用

  php app / console doctrine:database:drop --force 

然而,通过以上提到的错误再次创建它失败。



尝试通过以下方式清除缓存时,这种错误也会发生:

  ./ app / console cache:clear 

所以这似乎与symfony2如何使整个数据库堆栈生效相关。



详细的错误消息如下所示:

  [2015-10-06 17:26:28] event.DEBUG:通知事件console.command到监听器Symfony\Component\HttpKernel\EventListener\DebugHandlersListener ::配置。 {uid:c9f3fb0} 
[2015-10-06 17:26:28] event.DEBUG:通知事件console.commandto listenerSymfony\Bridge\Monolog\Handler\\ \\ConsoleHandler ::按需。 {uid:c9f3fb0}
使用debug true清除开发环境的缓存
清除过期的预热目录
预热缓存



[Doctrine\DBAL\Exception\ConnectionException]
驱动程序出现异常:SQLSTATE [42000] [1049]未知数据库'local_api'



异常跟踪:
()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver / AbstractMySQLDriver.php:103
Doctrine\DBAL\Driver \AbstractMySQLDriver-> convertException()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / DBALException.php:133
Doctrine\DBAL\DBALException :: driverException()at 〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver / PDOMySql / Driver.php:47
Doctrine\DBAL\Driver\PDOMySql\Driver-> connect() at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php:360
Doctrine\DBAL\Connection- >在〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php的connect():〜/ src下的429
Doctrine\DBAL\Connection-> getDatabasePlatformVersion /api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:389
Doctrine\DBAL\Connection-> detectDatabasePlatform()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php:328
Doctrine\DBAL\Connection-> getDatabasePlatform()at〜/ src / api / vendor / doctrine / doctrine-bundle / ConnectionFactory.php:61
Doctrine\Bundle\DoctrineBundle\ConnectionFactory-> createConnection()at〜/ src / api / app / cache / de_ / ap_DevDebugProjectContainer.php:1093
ap_DevDebugProjectContainer-> getDoctrine_Dbal_DefaultConnectionService()at〜 src / api / app / bootstrap.php.cache:2155
Symfony\Component\DependencyInjection\Container-> get()at〜/ src / api / app / cache / de_ / ap_DevDebugProjectContainer.php: 1142
ap_DevDebugProjectContainer-> getDoctrine_Orm_DefaultEntityM在〜/ src / api / app / bootstrap.php.cache上的anagerService():2155
Symfony\Component\DependencyInjection\Container-> get()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bridge / Doctrine / ManagerRegistry.php:35
Symfony\Bridge\Doctrine\ManagerRegistry-> getService()在〜/ src / api / vendor / doctrine / common / lib / Doctrine / Common / Persistence / AbstractManagerRegistry.php:226
Doctrine\Common\Persistence\AbstractManagerRegistry-> getManagers()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bridge / Doctrine / CacheWarmer / ProxyCacheWarmer.php:54
Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer-> warmUp()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Component /HttpKernel/CacheWarmer/CacheWarmerAggregate.php:48
Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate-> warmUp()at〜/ src / api / app / bootstrap.php.cache:2641
Symfony\Component\HttpKernel\Kernel-> in itializeContainer()at〜/ src / api / app / bootstrap.php.cache:2411
Symfony\Component\HttpKernel\Kernel-> boot()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Command / CacheClearCommand.php:128
Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand-> warmup()at〜/ src / api / vendor / symfony /symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:90
Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand-> execute()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Command / Command.php:259
Symfony\Component\Console\Command\Command-> run()在〜/ src / api / vendor /symfony/symfony/src/Symfony/Component/Console/Application.php:886
Symfony\Component\Console\Application-> doRunCommand()at〜/ src / api / vendor / symfony / symfony /src/Symfony/Component/Console/Application.php:195
Symfony\Component\Console\App lication-> doRun()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Console / Application.php:96
Symfony\Bundle\FrameworkBundle\Console\\ \\应用程序> doRun()在〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Application.php:126
Symfony\Component\Console\Application-> ; run()at〜/ src / api / app / console:27





[Doctrine\DBAL\Driver\ PDOException]
SQLSTATE [42000] [1049]未知数据库'local_api'



异常跟踪:
()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php:47
Doctrine\DBAL\Driver\PDOConnection :: __ construct()at〜/ src / api / vendor / doctrine / dbal /lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php:45
Doctrine\DBAL\Driver\PDOMySql\Driver-> connect()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php:360
Do ctrine\DBAL\Connection-> connect()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php:429
Doctrine\DBAL\Connection-> ;〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php中的getDatabasePlatformVersion()在〜/ src / 389
Doctrine\DBAL\Connection-> detectDatabasePlatform() api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php:328
Doctrine\DBAL\Connection-> getDatabasePlatform()at〜/ src / api / vendor / doctrine / doctrine-bundle /ConnectionFactory.php:61
Doctrine\Bundle\DoctrineBundle\ConnectionFactory-> createConnection()at〜/ src / api / app / cache / de_ / ap_DevDebugProjectContainer.php:1093
ap_DevDebugProjectContainer- > getDoctrine_Dbal_DefaultConnectionService()at〜/ src / api / app / bootstrap.php.cache:2155
Symfony\Component\DependencyInjection\Container-> get()at〜/ src / api / app / cache / de_ / ap_DevDebugProjectContainer.php:1142
ap_DevDebugProjectContainer-&在〜/ src / api / app / bootstrap.php.cache中的getDoctrine_Orm_DefaultEntityManagerService():2155
Symfony\Component\DependencyInjection\Container-> get()在〜/ src / api / vendor / symfony / symfony / src / Symfony / Bridge / Doctrine / ManagerRegistry.php:35
Symfony\Bridge\Doctrine\ManagerRegistry-> getService()at〜/ src / api / vendor / doctrine / common / lib / Doctrine / Common / Persistence / AbstractManagerRegistry.php:226
Doctrine\Common\Persistence\AbstractManagerRegistry-> getManagers()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bridge / Doctrine / CacheWarmer / ProxyCacheWarmer.php:54
Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer-> warmUp()at〜/ src / api / vendor / symfony / symfony / src / Symfony /Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php:48
Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate-> warmUp()at〜/ src / api / app / bootstrap.php.cache: 2641
Symfony\Component \\ HttpKernel\Kernel-> initializeContainer()at〜/ src / api / app / bootstrap.php.cache:2411
Symfony\Component\HttpKernel\Kernel-> boot()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Command / CacheClearCommand.php:128
Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand-> warmup()at〜 /src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:90
Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand-> execute()在〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Command / Command.php:259
Symfony\Component\Console\Command\Command-> run()在〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Application.php:886
Symfony\Component\Console\Application-> doRunCommand()at〜/ src /api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:195
Symfony在〜/ src / api / vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Console / Application.php中的组件\Console\Application-> doRun()$ 96 $ b $ Sym \\ FrameworkBundle\Console\Application-> doRun()在〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Application.php:126
Symfony\Component\控制台\应用程序 - >运行()在〜/ src / api / app / console:27





[PDOException]
SQLSTATE [42000] [1049]未知数据库'local_api'



异常跟踪:
()at〜/ src / api / vendor / doctrine /dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43
PDO-> __ construct()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver / PDOConnection。 php:43
Doctrine\DBAL\Driver\PDOConnection-> __ construct()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Driver / PDOMySql / Driver.php: 45
Doctrine\DBAL\\ \\ Driver\PDOMySql\Driver-> connect()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php:360
Doctrine\DBAL\Connection- >在〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php的connect():〜/ src下的429
Doctrine\DBAL\Connection-> getDatabasePlatformVersion /api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:389
Doctrine\DBAL\Connection-> detectDatabasePlatform()at〜/ src / api / vendor / doctrine / dbal / lib / Doctrine / DBAL / Connection.php:328
Doctrine\DBAL\Connection-> getDatabasePlatform()at〜/ src / api / vendor / doctrine / doctrine-bundle / ConnectionFactory.php:61
Doctrine\Bundle\DoctrineBundle\ConnectionFactory-> createConnection()at〜/ src / api / app / cache / de_ / ap_DevDebugProjectContainer.php:1093
ap_DevDebugProjectContainer-> getDoctrine_Dbal_DefaultConnectionService()at〜 src / api / app / bootstrap.php.cache:2155
Symfony\Component\DependencyInjec在〜/ src / api / app / bootstrap的〜/ src / api / app / cache / de_ / ap_DevDebugProjectContainer.php:1142
ap_DevDebugProjectContainer-> getDoctrine_Orm_DefaultEntityManagerService() php.cache:2155
Symfony\Component\DependencyInjection\Container-> get()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bridge / Doctrine / ManagerRegistry.php: 35
Symfony\Bridge\Doctrine\ManagerRegistry-> getService()at〜/ src / api / vendor / doctrine / common / lib / Doctrine / Common / Persistence / AbstractManagerRegistry.php:226
Doctrine\Common\Persistence\AbstractManagerRegistry-> getManagers()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bridge / Doctrine / CacheWarmer / ProxyCacheWarmer.php:54
Symfony \Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer-> warmUp()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / HttpKernel / CacheWarmer / CacheWarmerAggregate.php:48
Symfony\Component\HttpKernel \CacheWarmer\CacheWarmerAggregate-> warmUp()at〜/ src / api / app / bootstrap.php.cache:2641
Symfony\Component\HttpKernel\Kernel-> initializeContainer()at〜 /src/api/app/bootstrap.php.cache:2411
Symfony\Component\HttpKernel\Kernel-> boot()在〜/ src / api / vendor / symfony / symfony / src / Symfony /Bundle/FrameworkBundle/Command/CacheClearCommand.php:128
Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand-> warmup()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Command / CacheClearCommand.php:90
Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand-> execute()at〜/ src / api / vendor / symfony / symfony / src /Symfony/Component/Console/Command/Command.php:259
Symfony\Component\Console\Command\Command-> run()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Application.php:886
Symfony\Component\Console\Appli在〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Application.php:195
Symfony\Component\Console\Application->中的doRunCommand() doRun()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Bundle / FrameworkBundle / Console / Application.php:96
Symfony\Bundle\FrameworkBundle\Console\Application-> ; doRun()at〜/ src / api / vendor / symfony / symfony / src / Symfony / Component / Console / Application.php:126
Symfony\Component\Console\Application-> run() at〜/ src / api / app / console:27


cache:clear [--no-warmup] [--no-optional-warmers]


解决方案

如果您仍然想使用最新版本的 doctrine / dbal ,您只需在dbal配置中指定 server_version

  doctrine:
dbal:
default_connection:默认
连接:
de故障:
dbname:local_api
用户:root
密码:null
主机:localhost
驱动程序:pdo_mysql
server_version:'5.5'#您的数据库服务器版本

我不能告诉你为什么他们没有默认的server_version,但在这里是关于它的讨论 https://github.com/doctrine/DoctrineBundle/issues/351



由于您使用的是mysql数据库,以下是如何查看您的server_version:

  mysql --version 

> mysql Ver 14.14 Distrib 5.5.44,对于debian-linux-gnu(x86_64),使用readline 6.3

看到当前的Distrib是 5.5



当然,我建议您将此值设置为 parameters.yml


I have setup a new dev enviorment via docker. I have a symfony2 (2.6) application, so I want to intitalize the mysql database using the app/console doctrine approach.

Yet when running

$ php app/console doctrine:database:create --if-not-exists

I get this error message:

  [Doctrine\DBAL\Exception\ConnectionException]                                                
  An exception occured in driver: SQLSTATE[42000] [1049] Unknown database 'local_api'  

  [Doctrine\DBAL\Driver\PDOException]                          
  SQLSTATE[42000] [1049] Unknown database 'local_api'

  [PDOException]                                               
  SQLSTATE[42000] [1049] Unknown database 'local_api'

It true that the mysql database does not exist. I want to create in the first place. What's going on here?

I found a bug report for the doctrine/doctrine-bundle, yet we are already using the fixed version 1.5.

I also found a symfony2.6 issue, yet it also prevails after upgrading symfony2 to 2.7.5.

I know that I can create them when I connect direclty to my mysql database and run CREATE DATABASE local_api, yet I want my workflow to go through doctrine2.

And just to make absolutly sure that the issue is unrelated to my databse setup I ran:

$ mysql --host=10.10.10.10 --user=foo --password=bar 
mysql> CREATE DATABASE local_api;
Query OK, 1 row affected (0.00 sec)
mysql> Bye
$ php app/console doctrine:database:create --if-not-exists
Database `local_api` for connection named default already exists. Skipped.

I then can drop the database using

php app/console doctrine:database:drop --force

Yet recreating it fails again with above mentioned error.

This errror also occurs while trying to clear the cache via:

./app/console cache:clear

So it seems related to how symfony2 initalized the whole db stack.

The verbose error message looks like this:

[2015-10-06 17:26:28] event.DEBUG: Notified event "console.command" to listener "Symfony\Component\HttpKernel\EventListener\DebugHandlersListener::configure".  {"uid":"c9f3fb0"}
[2015-10-06 17:26:28] event.DEBUG: Notified event "console.command" to listener "Symfony\Bridge\Monolog\Handler\ConsoleHandler::onCommand".  {"uid":"c9f3fb0"}
Clearing the cache for the dev environment with debug true
  Clearing outdated warmup directory
  Warming up cache



  [Doctrine\DBAL\Exception\ConnectionException]                                        
  An exception occured in driver: SQLSTATE[42000] [1049] Unknown database 'local_api'  



Exception trace:
 () at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php:103
 Doctrine\DBAL\Driver\AbstractMySQLDriver->convertException() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php:133
 Doctrine\DBAL\DBALException::driverException() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php:47
 Doctrine\DBAL\Driver\PDOMySql\Driver->connect() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:360
 Doctrine\DBAL\Connection->connect() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:429
 Doctrine\DBAL\Connection->getDatabasePlatformVersion() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:389
 Doctrine\DBAL\Connection->detectDatabasePlatform() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:328
 Doctrine\DBAL\Connection->getDatabasePlatform() at ~/src/api/vendor/doctrine/doctrine-bundle/ConnectionFactory.php:61
 Doctrine\Bundle\DoctrineBundle\ConnectionFactory->createConnection() at ~/src/api/app/cache/de_/ap_DevDebugProjectContainer.php:1093
 ap_DevDebugProjectContainer->getDoctrine_Dbal_DefaultConnectionService() at ~/src/api/app/bootstrap.php.cache:2155
 Symfony\Component\DependencyInjection\Container->get() at ~/src/api/app/cache/de_/ap_DevDebugProjectContainer.php:1142
 ap_DevDebugProjectContainer->getDoctrine_Orm_DefaultEntityManagerService() at ~/src/api/app/bootstrap.php.cache:2155
 Symfony\Component\DependencyInjection\Container->get() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ManagerRegistry.php:35
 Symfony\Bridge\Doctrine\ManagerRegistry->getService() at ~/src/api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php:226
 Doctrine\Common\Persistence\AbstractManagerRegistry->getManagers() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/CacheWarmer/ProxyCacheWarmer.php:54
 Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer->warmUp() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php:48
 Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate->warmUp() at ~/src/api/app/bootstrap.php.cache:2641
 Symfony\Component\HttpKernel\Kernel->initializeContainer() at ~/src/api/app/bootstrap.php.cache:2411
 Symfony\Component\HttpKernel\Kernel->boot() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:128
 Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand->warmup() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:90
 Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand->execute() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:259
 Symfony\Component\Console\Command\Command->run() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:886
 Symfony\Component\Console\Application->doRunCommand() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:195
 Symfony\Component\Console\Application->doRun() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:126
 Symfony\Component\Console\Application->run() at ~/src/api/app/console:27





  [Doctrine\DBAL\Driver\PDOException]                  
  SQLSTATE[42000] [1049] Unknown database 'local_api'  



Exception trace:
 () at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:47
 Doctrine\DBAL\Driver\PDOConnection::__construct() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php:45
 Doctrine\DBAL\Driver\PDOMySql\Driver->connect() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:360
 Doctrine\DBAL\Connection->connect() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:429
 Doctrine\DBAL\Connection->getDatabasePlatformVersion() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:389
 Doctrine\DBAL\Connection->detectDatabasePlatform() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:328
 Doctrine\DBAL\Connection->getDatabasePlatform() at ~/src/api/vendor/doctrine/doctrine-bundle/ConnectionFactory.php:61
 Doctrine\Bundle\DoctrineBundle\ConnectionFactory->createConnection() at ~/src/api/app/cache/de_/ap_DevDebugProjectContainer.php:1093
 ap_DevDebugProjectContainer->getDoctrine_Dbal_DefaultConnectionService() at ~/src/api/app/bootstrap.php.cache:2155
 Symfony\Component\DependencyInjection\Container->get() at ~/src/api/app/cache/de_/ap_DevDebugProjectContainer.php:1142
 ap_DevDebugProjectContainer->getDoctrine_Orm_DefaultEntityManagerService() at ~/src/api/app/bootstrap.php.cache:2155
 Symfony\Component\DependencyInjection\Container->get() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ManagerRegistry.php:35
 Symfony\Bridge\Doctrine\ManagerRegistry->getService() at ~/src/api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php:226
 Doctrine\Common\Persistence\AbstractManagerRegistry->getManagers() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/CacheWarmer/ProxyCacheWarmer.php:54
 Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer->warmUp() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php:48
 Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate->warmUp() at ~/src/api/app/bootstrap.php.cache:2641
 Symfony\Component\HttpKernel\Kernel->initializeContainer() at ~/src/api/app/bootstrap.php.cache:2411
 Symfony\Component\HttpKernel\Kernel->boot() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:128
 Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand->warmup() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:90
 Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand->execute() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:259
 Symfony\Component\Console\Command\Command->run() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:886
 Symfony\Component\Console\Application->doRunCommand() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:195
 Symfony\Component\Console\Application->doRun() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:126
 Symfony\Component\Console\Application->run() at ~/src/api/app/console:27





  [PDOException]                                       
  SQLSTATE[42000] [1049] Unknown database 'local_api'  



Exception trace:
 () at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43
 PDO->__construct() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:43
 Doctrine\DBAL\Driver\PDOConnection->__construct() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php:45
 Doctrine\DBAL\Driver\PDOMySql\Driver->connect() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:360
 Doctrine\DBAL\Connection->connect() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:429
 Doctrine\DBAL\Connection->getDatabasePlatformVersion() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:389
 Doctrine\DBAL\Connection->detectDatabasePlatform() at ~/src/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:328
 Doctrine\DBAL\Connection->getDatabasePlatform() at ~/src/api/vendor/doctrine/doctrine-bundle/ConnectionFactory.php:61
 Doctrine\Bundle\DoctrineBundle\ConnectionFactory->createConnection() at ~/src/api/app/cache/de_/ap_DevDebugProjectContainer.php:1093
 ap_DevDebugProjectContainer->getDoctrine_Dbal_DefaultConnectionService() at ~/src/api/app/bootstrap.php.cache:2155
 Symfony\Component\DependencyInjection\Container->get() at ~/src/api/app/cache/de_/ap_DevDebugProjectContainer.php:1142
 ap_DevDebugProjectContainer->getDoctrine_Orm_DefaultEntityManagerService() at ~/src/api/app/bootstrap.php.cache:2155
 Symfony\Component\DependencyInjection\Container->get() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ManagerRegistry.php:35
 Symfony\Bridge\Doctrine\ManagerRegistry->getService() at ~/src/api/vendor/doctrine/common/lib/Doctrine/Common/Persistence/AbstractManagerRegistry.php:226
 Doctrine\Common\Persistence\AbstractManagerRegistry->getManagers() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/CacheWarmer/ProxyCacheWarmer.php:54
 Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer->warmUp() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/CacheWarmer/CacheWarmerAggregate.php:48
 Symfony\Component\HttpKernel\CacheWarmer\CacheWarmerAggregate->warmUp() at ~/src/api/app/bootstrap.php.cache:2641
 Symfony\Component\HttpKernel\Kernel->initializeContainer() at ~/src/api/app/bootstrap.php.cache:2411
 Symfony\Component\HttpKernel\Kernel->boot() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:128
 Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand->warmup() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php:90
 Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand->execute() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php:259
 Symfony\Component\Console\Command\Command->run() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:886
 Symfony\Component\Console\Application->doRunCommand() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:195
 Symfony\Component\Console\Application->doRun() at ~/src/api/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php:96
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at ~/src/api/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php:126
 Symfony\Component\Console\Application->run() at ~/src/api/app/console:27


cache:clear [--no-warmup] [--no-optional-warmers]

解决方案

If you still want to do it with the latest version of doctrine/dbal, all you have to do is to specify the server_version in the dbal configuration:

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                dbname:         local_api
                user:           root
                password:       null
                host:           localhost
                driver:         pdo_mysql
                server_version: '5.5' # your database server version here

I can't tell you why they didn't put a default server_version though, but here is the discussion about it https://github.com/doctrine/DoctrineBundle/issues/351

Since you're using a mysql database, here is how to see your server_version:

mysql --version

> mysql  Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.3

We see that the current Distrib is 5.5.

Of course I recommend you to set this value in parameters.yml.

这篇关于如何用doctrine2创建数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆