我在部署symfony2应用程序时遇到问题。我收到以下错误:
SQLSTATE[42S02]: Base table or view not found: 1146 Table '14271425_sjokh.Books' doesn't exist
我发现此错误与案例问题有关。
给定的表存在于服务器上,但称为books
而不是Books
。
我试图通过修改config.yml来解决这个问题,并添加到naming_strategy: doctrine.orm.naming_strategy.underscore
(如此处提出的那样:Symfony2: Base table or view not found: 1146)但它没有帮助。
doctrine:
orm:
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
答案 0 :(得分:1)
Doctrine下划线命名策略不会使实体名称复数化,例如RoR中的情况。
因此,对于 Book 实体,下划线策略需要名为 book 的表。对于 SomeCamelcase 实体,它需要 some_camelcase 表。
您应该重命名表或通过配置告诉doctrine表名是什么。例如,如果使用注释,则为:
/**
* @ORM\Table(name="books")
*/
class Book
{
// ....
}
答案 1 :(得分:0)
似乎我的问题与学说注释中的错误案例有关。
我删除了以下代码:
* @ORM\Table(name="Books")
这与编辑配置文件一起添加:
doctrine:
orm:
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_generate_proxy_classes: "%kernel.debug%"
auto_mapping: true
使脚本正常工作。