【问题标题】:Can't create an index column in Symfony无法在 Symfony 中创建索引列
【发布时间】:2018-12-12 10:59:51
【问题描述】:

我之前创建了一个包含多列的表。其中有一个longtext 类型的“消息” 列。我想通过为"message" 列创建索引来修改我的表。我更改了我的实体并在我的 bash 上使用命令来更新表格。不幸的是,我收到了这个错误信息。

An exception occurred while executing 'CREATE INDEX message_idx ON 
project (message)':SQLSTATE[42000]: Syntax error or access violation: 
1170 BLOB/TEXT column 'message' used in key specification without a key 
length      

我想指出我一直在寻找进行这种操作的方法。这就是我所做的。

索引:

 * @ORM\Table(indexes={@ORM\Index(name="message_idx",columns={"message"},options={"length"=255})})

栏目:

 /**
 * @var String $message
 * @ORM\Column(name="message", type="text",length=255,nullable=true,options={"default": "NULL"})
 */
private $message;

【问题讨论】:

  • 我认为您根本无法为带有教义注释的文本索引定义长度。
  • 是的@u_mulder..

标签: php mysql symfony doctrine-orm


【解决方案1】:

试试

/**
 * @ORM\Entity
 * @ORM\Table(indexes={@ORM\Index(name="message_idx",columns={"message"}, options={"length": 255})})
 */
class Test
{
    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
    * @ORM\Column(name="message", type="string", length=255,nullable=true)
    */
    private $message;

}

当你使用文本类型作为索引时,你需要定义一个长度,'text'类型没有长度,所以你需要使用'string'和长度

【讨论】:

  • 在简历中,错误是 MySQL 错误而不是 Doctrine 错误。
  • 是的,我知道。你的解决方案对我有用。谢谢@Cuchu
猜你喜欢
  • 2014-08-21
  • 1970-01-01
  • 2015-03-03
  • 2015-08-21
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多