Symfony'SQLSTATE [HY000] [1049]未知数据库'symfony''

问题描述:

我正在和一些朋友一起讨论symfony(2.5。)项目,并且我们试图摆脱网站的工作,但不知何故总是崩溃。我们尝试更新到新版本的symfony(2.)并清除缓存,但似乎没有任何效果。Symfony'SQLSTATE [HY000] [1049]未知数据库'symfony''

我认为,问题的根源是,不知何故symfony的尝试访问“默认”数据库,而不是我们在

parameters.yml 

这里指定的数据库中的文件:

parameters: 
     database_driver: pdo_mysql 
     database_host: 127.0.0.1 
     database_port: 3306 
     database_name: testdb 
     database_user: root 
     database_password: null 
     mailer_transport: smtp 
     mailer_host: 127.0.0.1 
     mailer_user: null 
     mailer_password: null 
     secret: ThisIsVerySecret 
     locale: en 
     debug_toolbar: true 
     debug_redirects: false 
     use_assetic_controller: true 

Config.yml - >学说的一部分

# Doctrine Configuration 
    doctrine: 
     dbal: 
     driver: "%database_driver%" 
     host:  "%database_host%" 
     port:  "%database_port%" 
     dbname: "%database_name%" 
     user:  "%database_user%" 
     password: "%database_password%" 
     charset: UTF8 
     orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     auto_mapping: true 

paginaController

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; 

class PaginaController extends Controller 
{ 

    /** 
    * @Template 
    */ 
    public function partnersAction() 
    { 
     return array(); 
    } 
    /** 
    * @Template 
    * @Cache(expires="tomorrow") 
    */ 
    public function homeAction() 
    { 
     return array(); 
    } 

    /** 
    * @Template 
    */ 
    public function geschiedenisAction() 
    { 
     return array(); 
    } 

    /** 
    * @Template 
    */ 
    public function profielAction() 
    { 
     return array(); 
    } 

    /** 
    * @Template 
    */ 
    public function reunistenAction() 
    { 
     return array(); 
    } 

    /** 
    * @Template 
    */ 
    public function linksAction() 
    { 
     return array(); 
    } 
} 

我们已经创建了一个名为symfony,看看会发生什么,一个空数据库。 Ar首先加载页面,但在尝试登录时我们会收到相同的错误(因为我们仍然需要访问数据库中的数据)。

Base table or view not found: 1146 Table 'symfony.leden' doesn't exist 

在此错误,它也指symfony -database,而不是testdb -database。

是否有任何可能的方法来解决这个问题,并得到symfony识别正确的数据库(testdb),而不是访问一个叫做symfony的无害数据库?

+0

你可以发布你的config.yml包含的'doctrine:'部分吗? –

+0

我已添加该部分!感谢您的帮助(提前!)。 – Pim

+0

Ok Pim,我明白了。谢谢。那里没有错。所以,当你使用调试URL(追加'app_dev.php'到你的URL)[见这个链接](http://symfony.com/doc/current/configuration/environments.html#executing-an-application-in-不同的环境)是否显示它正在使用哪个控制器以及哪条线?你能从控制器发布你获得EntityManager的相关代码吗?也许你已经在那里指定了Symfony?哦,并确保你已经使用'php bin/console cache清除了你的缓存:clear --env = prod',我不确定这是否相关。 –

既然你已经创建了一个名为symfony数据库,那么你需要在你的parameters.yml文件来改变这样的:

database_name: symfony 

或者在命令行中,你可以运行:

php bin/console doctrine:database:create 

这将在您的parameters.yml文件中创建数据库。

您还需要设置MySQL用户名和密码。默认值是'root'和'null',所以这通常不起作用。


编辑#2 听起来像是从意见反馈的缓存问题。尝试从命令行:

php bin/console cache:clear --env=prod 

看看是否有效。

+0

嗨Alvin,谢谢你的回复!我知道如何创建一个新的数据库,但我不想使用symfony数据库,这仅仅是我过去如何解决这个问题的一个例子。 你知道为什么symfony会在我尝试加载网站时引用symfony-database,即使我在paramaters.yml中指定了我希望使用'testdb'吗? – Pim

+0

当我看到你在config.yml文件的'doctrine:'部分中有什么时,我会更新我的帖子。我可能还需要看到你的控制器(只有相关的代码)。这应该是一个“简单”的修复,你可能只是有一个错误的地方。 –

+0

我已经完成了这一步,现在页面**不会渲染,(不会抛出任何错误)。很奇怪。没有'app_dev.php'它崩溃。用'app_dev.php'登录也一样。我可以登录,没有崩溃。我将添加控制器 – Pim