У меня есть стол с колонкой "отель". Проект создан в Laravel 5.4, поэтому я использовал Migrations.
$table->string('hotel', 50);
Это MYSQL VARCHAR (50). Он работал хорошо, потому что, когда я развивался, я использовал короткие названия отелей, такие как "HILTON NEW YORK 5" *.
Теперь проект идет по производству, и клиент спросил, почему они не могут вводить длинные названия отелей. Я протестировал его таким макетным названием отеля, как "Длинные долгое длинное длинное длинное длинное длинное длинное длинное и очень-очень длинное название отеля 5 звезд"
Это дало мне ошибку:
"SQLSTATE [22001]: данные строки, усеченные справа: 1406 Данные слишком длинны для столбца" отель "в строке 1"
Я открыл базу данных в своем Sequel Pro и изменил ее
- сначала VARCHAR (255)
- затем в ТЕКСТ
После каждого изменения я тестировал его с тем же "длинным длинным длинным длинным длинным длинным длинным длинным длинным длинным и очень-очень длинным названием отеля 5 начинается" и получает ту же ошибку (см. Выше).
Я проверил тип столбца с
SHOW FIELDS FROM table_name
и это дало мне
Поле | Тип
отель | текст
поэтому тип поля действительно "текст" (65 535 символов).
Может быть, это как-то связано с файлом миграции Laravel (см. Выше), где я установил VARCHAR (50) в начале? Но я не могу повторно запустить миграцию на производстве, потому что в таблице теперь есть данные.
Поблагодарили бы за любую помощь.
ОБНОВЛЕНИЕ: я обнаружил, что он фактически сохраняет это длинное название отеля в БД. Но пользователь по-прежнему получает эту досадную ошибку каждый раз после отправки формы...