我之前创建了一个包含多列的表。其中有一个长文本
类型的“消息”列。我想通过为 "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;
最佳答案
尝试
/**
* @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;
}
当您使用文本类型作为索引时,您需要定义长度,而“文本”类型没有长度,因此您需要使用“字符串”和长度
关于php - 无法在 Symfony 中创建索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53741545/