嗨,我正在和一位朋友一起参与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) 我真的无法想象问题是什么。
我希望有人可以帮助我们!
答案 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'
];
}