将学说查询生成配置为小写
Posted
技术标签:
【中文标题】将学说查询生成配置为小写【英文标题】:Configure doctrine queries generation to lowercase 【发布时间】:2017-01-12 12:21:28 【问题描述】:在 Unix 上部署我的 symfony 项目时出现 sql 错误。事实上,查询使用大写的表名,这在以前不是这样。在数据库中,表名是小写的。
有人知道您在哪里配置查询生成方式(大写或小写)
谢谢。
也许在 Doctrine 配置中有些东西??
注意:我有一些新信息。
我要求在我知道它正在工作的时候从保存中重建我的数据库。 我有一些错误,因为对于新代码,数据库必须与此时的数据库略有不同,但我可以看到在查询中表的名称是小写的。 我在命令行中传递了我的新 sql(和以前一样,加上一些小改动)。
\. path/to/my/sql
我启动了网站,查询是用大写的表名进行的。
有什么想法吗?
实体示例:
<?php
namespace MyBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* MyTable
*
* @ORM\Table(name="mytable")
* @ORM\Entity(repositoryClass="MyBundle\Repository\MyClassRepository")
*/
class MyTable
/**
* @var string
*
* @ORM\Column(name="FIELD1, type="string", length=120, nullable=false)
*/
private $field1;
/**
* @var string
*
* @ORM\Column(name="FIELD2", type="string", length=50, nullable=true)
*/
private $field2
/**
* Set field1
*
* @param string $field1
*
* @return Tretb
*/
public function setField1($field1)
$this->field1 = $field1;
return $this;
/**
* Get field1
*
* @return string
*/
public function getField1()
return $this->field1;
/**
* Set field2
*
* @param string $field2
*
* @return Tretb
*/
public function setField2($field2)
$this->field2 = $field2;
return $this;
/**
* Get field2
*
* @return string
*/
public function getField2()
return $this->field2;
【问题讨论】:
请至少提供一个示例实体和一个示例控制器,这可能有助于找到问题。 【参考方案1】:不知道能不能配置得更笼统,但是可以用学说为每个实体定义表表
/**
* AppBundle\Entity\MyEntity
*
* @ORM\Table()
* @ORM\Entity
* @ORM\Table(name="mytable")
*/
class MyEntity
【讨论】:
【参考方案2】:您的 mysql 实例是否支持小写表名? 要检查设置,请使用:
mysql> show variables like "lower_case%";
要更改设置,您需要更改 mysql 设置
lower_case_table_names = 1 or lower_case_table_names = 2
Source from ***
【讨论】:
将 1 或 2 放入 lower_case_table_names 的指令是什么? 我不明白的另一件事......为什么它没有像注释中那样编写列名和表名的sql查询? 如果您在 mysql 控制台中更改选项,则它不起作用。您需要在 mysql.ini 或 my.conf 文件中更改它。 您能否为我们提供您代码中的示例实体? 服务器配置依赖于其他人......另外,以前它曾经可以工作,尽管他们没有更改配置中的任何内容以上是关于将学说查询生成配置为小写的主要内容,如果未能解决你的问题,请参考以下文章