Не удается создать индексный столбец в Symfony - PullRequest
0 голосов
/ 12 декабря 2018

Я ранее создал таблицу с несколькими столбцами.Среди них «сообщение» столбец типа 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;

1 Ответ

0 голосов
/ 12 декабря 2018

попробуйте с

/**
 * @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;

}

Когда вы используете текстовый тип в качестве индекса, вам нужно определить длину, а текстовый тип не имеет длины, поэтому вам нужно использовать «строку» и длину

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...