sbh
@sbh

Почему возникает ошибка при заливке дампа в базу?

Устанавливаю CRM.
Создал пустую БД.
Заливаю дамп базы из пакета установки в базу и получаю ошибку.

Заливаю вот так:

mysql -uroot -p dbname < db_dump.sql

Кусок дампа со строкой на которой возникает ошибка

DROP TABLE IF EXISTS `salesman_activities`;#%%
CREATE TABLE `salesman_activities` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(20) NOT NULL,
`color` varchar(7) NOT NULL,
`resultat` text NOT NULL,
`isDefault` varchar(6) NOT NULL,
`aorder` int(5) NOT NULL,
`filter` varchar(255) DEFAULT 'all' NOT NULL,
`identity` int(30) DEFAULT '1' NOT NULL,
PRIMARY KEY (`id`),
KEY `title` (`title`),
KEY `identity` (`identity`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;#%%

INSERT INTO `salesman_activities` VALUES ('1','исх.1.Звонок','#009900','Не дозвонился;Нет на месте;Отказ;Переговорили;Запрос КП','','0','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('2','Факс','#cc00cc','Отправлен и получен;Отправлен;Не отвечает;Не принимают','','1','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('3','Встреча','#993366','Состоялась;Перенос сроков;Отменена;Отпала необходимость','','2','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('4','Задача','#ff9900','Не выполнено;Перенос сроков;Отложено;Выполнено','','3','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('5','Предложение','#ff0000','Перенос;Отправлено КП;Отменено','','4','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('6','Событие','#666699','Выполнено;Перенос;Отложено','','5','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('7','исх.Почта','#0000ff','Отправлено КП;Отправлен Договор;Отправлена Презентация;Отправлена информация','','6','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('8','вх.Звонок','#99cc00','Новое обращение;Запрос счета;Запрос КП;Приглашение;Договорились о встрече','','7','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('9','вх.Почта','#cc3300','','','8','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('10','Поздравление','#009999','Новый год;День Рождения;Праздник','','9','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('11','исх.2.Звонок','#339966','Не дозвонился;Нет на месте;Отказ;Переговорили;Запрос КП','yes','10','all','1');#%%
INSERT INTO `salesman_activities` VALUES ('12','Отправка КП','#ff0000','Отправлено;Перенесено;Отложено;Отменено','','11','all','1');#%%

Строка из-за которой ошибка:

INSERT INTO `salesman_activities` VALUES ('1','исх.1.Звонок','#009900','Не дозвонился;Нет на месте;Отказ;Переговорили;Запрос КП','','0','all','1');#%%

Текст ошибки:

ERROR 1406 (22001) at line 16: Data too long for column 'title' at row 1
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
При кодировке UTF-8 один символ считается за два, поэтому VARCHAR(20) маловато будет :) Если Вы имели в виду 20-ти символьное поле, куда будет вводиться не-ASCII текст, то длину поля нужно удвоить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@zapimir
Проблема скорее всего из-за неправильной кодировки соединения. Кодировка соединения явно стоит по умолчанию latin1, т.е. MySQL ожидает, что данные придут в latin1, а приходят в UTF-8, в результате русские буквы становятся "кракозябрами" (вот здесь описано об этом), причем из одной буквы становится 2.
Исправить ситуацию можно добавив в начало дампа строку
SET NAMES 'utf8';
Ответ написан
Ваш ответ на вопрос

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

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