В настоящее время я работаю над ОС Windows, и я установил сервер сообщества MySQL 5.6.30, и все в порядке. У меня есть скрипт, который инициализирует БД и снова, все работает нормально.MySQL: ограничение размера столбца
Теперь я пытаюсь запустить этот скрипт на среде Linux - та же версия MySQL - и я получаю следующее сообщение об ошибке:
ERROR 1074 (42000) at line 3: Column length too big for column 'txt' (max = 21845); use BLOB or TEXT instead
Script -
DROP TABLE IF EXISTS text;
CREATE TABLE `texts` (
`id` BINARY(16) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
`txt` VARCHAR(50000) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
Очевидно, что есть некоторые Конфигурация сервера MySQL на моей ОС Windows, которую мне нужно реплицировать на Linux; может ли кто-нибудь поделиться идеями?
Update 1
на RDS AWS схемы также работает и им вполне уверен, что его просто сервис поверх Linux так, очевидно, его просто вопрос конфигурации.
любое тело знает, как добраться до varchar 50k с помощью UTF8?. я не хочу использовать TEXT или MEDIUMTEXT или любой другой, просто старый VARCHAR (размер)
Update 2
я ценю различные решения, которые были предложены, но им не ищут нового им решения только глядя для ответа, как и почему varchar (50k) работает под окнами, а под linux - нет. Btw, im, используя набор charcter UTF8 и сортировку utf8_general_ci.
Ответ
ответить на мой собственный вопрос, это был вопрос с sql_mode был установлен в STRICT_TRANS_TABLES и должны были быть удалены.
Лично я бы сказал, что 50k «varchar» слишком длинный и должен быть «текстом» в любом случае. –
http: // stackoverflow.com/questions/25300821/difference-between-varchar-and-text-in-mysql –
@NiettheDarkAbsol Я не хочу использовать текст, я хочу, чтобы он работал как varchar. –