Понадобилось импортнуть дамп, где в таблице было такое поле и движок MyISAM:
`title` varchar(400) NOT NULL
ENGINE=MyISAM AUTO_INCREMENT=33525 DEFAULT CHARSET=utf8;
Однако столкнулся с такой ошибкой:
ERROR 1071 (42000) at line 1817: Specified key was too long; max key length is 1000 bytes
Решил проверить, поможет ли уменьшение поля title до 255:
`title` varchar(255) NOT NULL
И вуаля дамп загрузился, однако - это плохой вариант ибо могут потеряться данные.
После поисков в интернете решил попробовать поменять ENGINE на InnoDB и получил ошибку:
ERROR 1709 (HY000) at line 1817: Index column size too large. The maximum column size is 767 bytes.
В некоторых источниках говорится, что спасет установка параметра innodb_large_prefix в ON:
# mysql -uroot -p -e "set global innodb_large_prefix = ON;"
Однако и этот финт ушами не прокатил, тогда нашлось еще решение:
# mysql -uroot -p -e "set global innodb_file_format = BARRACUDA;"
И в дампе в строке с ENGINE у таблицы, дописать формат файла:
ENGINE=InnoDB AUTO_INCREMENT=33525 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
После чего, дамп успешно загрузился в базу.
Не забудем вернуть параметры взад:
# mysql -uroot -p -e "set global innodb_large_prefix = OFF;"
# mysql -uroot -p -e "set global innodb_file_format = Antelope;" // В моем случае был задан Antelope
`title` varchar(400) NOT NULL
ENGINE=MyISAM AUTO_INCREMENT=33525 DEFAULT CHARSET=utf8;
Однако столкнулся с такой ошибкой:
ERROR 1071 (42000) at line 1817: Specified key was too long; max key length is 1000 bytes
Решил проверить, поможет ли уменьшение поля title до 255:
`title` varchar(255) NOT NULL
И вуаля дамп загрузился, однако - это плохой вариант ибо могут потеряться данные.
После поисков в интернете решил попробовать поменять ENGINE на InnoDB и получил ошибку:
ERROR 1709 (HY000) at line 1817: Index column size too large. The maximum column size is 767 bytes.
В некоторых источниках говорится, что спасет установка параметра innodb_large_prefix в ON:
# mysql -uroot -p -e "set global innodb_large_prefix = ON;"
Однако и этот финт ушами не прокатил, тогда нашлось еще решение:
# mysql -uroot -p -e "set global innodb_file_format = BARRACUDA;"
И в дампе в строке с ENGINE у таблицы, дописать формат файла:
ENGINE=InnoDB AUTO_INCREMENT=33525 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
После чего, дамп успешно загрузился в базу.
Не забудем вернуть параметры взад:
# mysql -uroot -p -e "set global innodb_large_prefix = OFF;"
# mysql -uroot -p -e "set global innodb_file_format = Antelope;" // В моем случае был задан Antelope
Комментариев нет:
Отправить комментарий