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
的无害数据库?
既然你已经创建了一个名为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
看看是否有效。
嗨Alvin,谢谢你的回复!我知道如何创建一个新的数据库,但我不想使用symfony数据库,这仅仅是我过去如何解决这个问题的一个例子。 你知道为什么symfony会在我尝试加载网站时引用symfony-database,即使我在paramaters.yml中指定了我希望使用'testdb'吗? – Pim
当我看到你在config.yml文件的'doctrine:'部分中有什么时,我会更新我的帖子。我可能还需要看到你的控制器(只有相关的代码)。这应该是一个“简单”的修复,你可能只是有一个错误的地方。 –
我已经完成了这一步,现在页面**不会渲染,(不会抛出任何错误)。很奇怪。没有'app_dev.php'它崩溃。用'app_dev.php'登录也一样。我可以登录,没有崩溃。我将添加控制器 – Pim
你可以发布你的config.yml包含的'doctrine:'部分吗? –
我已添加该部分!感谢您的帮助(提前!)。 – Pim
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',我不确定这是否相关。 –