10

问题

嗨,我正在和一个朋友一起做 Symfony2 项目。他在基于 Windows 的计算机上工作,而我在我的 Mac 上。我们设置项目并在他的计算机上创建数据库模型/实体(代码优先)。现在我也想开始处理它,所以我们对我的本地主机做了一个 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)我真的无法想象问题出在哪里。

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

4

7 回答 7

13

这很可能是一个案例问题。您的数据库中有该district表,但教义要求该District表。

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

于 2013-01-17T13:33:27.057 回答
3

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

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

doctrine:
    orm:
        naming_strategy: doctrine.orm.naming_strategy.underscore
于 2014-06-04T09:17:19.850 回答
2

这适用于我在 symfony 2.7 中。只需放入 config.yml:

doctrine:
    # ...
    orm:
        # ...
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
于 2015-11-18T14:22:02.650 回答
1

表名大小写问题

socialgeogroep6.District

它应该按照socialgeogroep6.district屏幕截图。检查实体注释。

于 2013-01-17T13:32:38.850 回答
0

请注意:在阅读此解决方案之前。对于那些试图建立框架的人来说,这严格来说是一个解决方案。

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

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

然后,重新创建表。

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

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

于 2015-01-29T16:32:58.153 回答
0

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

区.orm.yml

Project\Bundle\DuterteBundle\Entity\Vp:
  type: entity
  table: district//note the lowercase
  repositoryClass: Project\Bundle\DuterteBundle\Repository\VpRepository 
于 2015-11-25T14:51:50.903 回答
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'
    ];
}
于 2020-04-06T07:51:41.100 回答