Symfony2:未找到基表或视图:1146

时间:2013-01-17 13:26:52

标签: php mysql symfony doctrine-orm

问题

嗨,我正在和一位朋友一起参与Symfony2项目。他正在使用基于Windows的计算机,而我正在使用我的Mac。 我们设置项目并在他的计算机上创建数据库模型/实体(代码优先)。现在我想开始研究它,所以我们对我的localhost做了一个SQL哑。我编辑了parameters.yml以匹配我的设置。该项目可以连接到服务器。 但是当我尝试打开使用数据库的页面时,我收到此错误:

  

执行'SELECT t0.id AS id1,t0.name AS name2,t0.bigimage AS bigimage3,t0.smallimage AS smallimage4,t0.info AS info5,t0.city_id AS city_id6 FROM District t0'时发生异常:

     

SQLSTATE [42S02]:找不到基表或视图:1146表'socialgeogroep6.District'不存在   500内部服务器错误 - DBALException   1个链接异常:PDOException»

为了清楚起见,该页面在他的计算机上正常运行;他得到了应有的数据。


问题

可能是什么问题?我一遍又一遍地看着我的PHPmyAdmin,数据库里面有所有的字段和数据...... (屏幕:http://gyazo.com/4a0e5f1ee6b1e29d2d277df5fc0d8aac) 我真的无法想象问题是什么。

我希望有人可以帮助我们!

7 个答案:

答案 0 :(得分:13)

这可能是一个案例问题。您的数据库上有district表,但是doctrine要求District表。

您应该将doctrine配置为使用小写表名。请参阅学说文档http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#persistent-classes以了解如何操作。

答案 1 :(得分:3)

我只是遇到了同样的问题,因为我在Windows上编写代码而我需要在linux上部署。

解决方案是在config.yml中添加以下行:

doctrine:
    orm:
        naming_strategy: doctrine.orm.naming_strategy.underscore

答案 2 :(得分:2)

这对我的symfony 2.7工作。只需输入config.yml:

doctrine:
    # ...
    orm:
        # ...
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore

答案 3 :(得分:1)

表名称案例问题

socialgeogroep6.District

根据屏幕截图,它应该是socialgeogroep6.district。检查实体注释。

答案 4 :(得分:0)

提醒:在阅读此解决方案之前。 对于那些试图建立框架的人来说,这绝对是一个解决方案。

我认为既然你刚刚开始尝试,你可以做的是,删除数据库,然后重新开始。

 - mysql -uroot -proot
 - show databases;
 - drop database <dbname>;

然后,重新创建表格。

 - app/console doctrine:database:create 
 - app/console doctrine:schema:create

请注意,如果您已经创建了控制器并且数据已经填充,那么在生产环境中执行此操作可能是一个非常糟糕的想法。

答案 5 :(得分:0)

如果您使用Orm,可以像这样设置

District.orm.yml

Project\Bundle\DuterteBundle\Entity\Vp:
  type: entity
  table: district//note the lowercase
  repositoryClass: Project\Bundle\DuterteBundle\Repository\VpRepository 

答案 6 :(得分:0)

可能会遗漏添加单表名称对象。

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Mapping extends Model
{


     protected $table = 'mapping';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'user_id', 'mapping', 'name'
    ];
}