Почему столбец текста не может иметь значения по умолчанию в MySQL?

При попытке создать Столбец текста на таблице и дать ему значение по умолчанию в MySQL, Вы получаете ошибку (в Windows, по крайней мере). Я не вижу причины, почему столбец текста не должен иметь значения по умолчанию. Никакое объяснение не дано документацией MySQL. Это кажется нелогичным мне (и несколько печальный, поскольку я хочу значение по умолчанию!). Кто-либо знает, почему это не позволяется?

164
задан Russ 12 August 2010 в 11:23
поделиться

2 ответа

Что именно вы делаете? Быстрый тест показал, что текстовый столбец может иметь значение по умолчанию:

    mysql> create table test (a char(32) not null default 'this works', b char(32) not null);
    Query OK, 0 rows affected (0.03 sec)
    mysql> insert into test (b) values('hello');
    Query OK, 1 row affected (0.01 sec)
    mysql> select * from test;

+------------+-------+
| a          | b     |
+------------+-------+
| this works | hello |
+------------+-------+
1 row in set (0.00 sec)
-9
ответ дан 1 August 2019 в 05:19
поделиться

Без каких-либо глубоких знаний о движке mySQL, я бы сказал, что это звучит как стратегия экономии памяти. Я предполагаю, что причина кроется в этом абзаце из docs :

Каждое значение BLOB или TEXT внутренне представлено отдельно выделенным объектом. Это отличается от всех других типов данных, для которых память выделяется один раз для каждого столбца при открытии таблицы.

Похоже, что предварительное заполнение этих типов столбцов приведет к использованию памяти и снижению производительности.

28
ответ дан 23 November 2019 в 21:14
поделиться
Другие вопросы по тегам:

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