@gifon

Как заставить базу обрезать данные которые не помещаются?

У меня есть таблица
Schema::create('MYTABLE', function (Blueprint $table) {
            $table->id();
            $table->tinyText('description');
        });
 DB::table('MYTABLE')->insert([
                    'id' => $id,
                    'description' => $description,
                ]);

но получаю
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'description'

как заставить базу обрезать данные если они слишком длинные?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
Ну вообще это стоит делать на уровне приложения. Ибо только вы знаете можно ли забить на данные или нет.
DB::table('MYTABLE')->insert([
                    'id' => $id,
                    'description' => mb_substr($description, 0, 255)
                ]);

Но нет препятствий патриотам - можно поиграться с SQL MODE если у вас MySQL и убрать все эти <сарказм>"ненужные ошибки"<сарказм> к чертям

For STRICT_TRANS_TABLES, MySQL converts an invalid value to the closest valid value for the column and inserts the adjusted value. If a value is missing, MySQL inserts the implicit default value for the column data type. In either case, MySQL generates a warning rather than an error and continues processing the statement. Implicit defaults are described in Section 11.6, “Data Type Default Values”.


P.S. Чего-то анекдот вспомнился

Среди работников милиции провели тест на сообразительность. Суть теста: в металлической пластине вырезаны отверстия различной формы (квадрат, круг, треугольник и т. д. ), в них нужно вставить соответствующие металлические тела. По результатам теста работники милиции разделились на две группы:
1. Тупые.
2. Очень сильные.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы