@WebforSelf

Почему после дампа базы данных слетели все ключи mysql?

Вопрос такой, в марте этого года сливался полный дамп сервера , база и сайт.

Теперь спустя длительное время заметил что во многих таблицах отстутствуют ключи. Прям абсолютно все. Из за этого создается вот такая вакханалия
5fb588eee878c706991915.png
Где внизу нули , это уже созданные данные после переноса с id = 0 , ну и соотвественно как быть теперь?
Кинулся в дамп, а там ключей в принципе нету.
Выглядит дамп этой таблицы вот так
DROP TABLE IF EXISTS `wa_contact_emails`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `wa_contact_emails` (
  `id` int(11) NOT NULL,
  `contact_id` int(11) NOT NULL,
  `email` varchar(255) NOT NULL,
  `ext` varchar(32) NOT NULL DEFAULT '',
  `sort` int(11) NOT NULL DEFAULT '0',
  `status` enum('unknown','confirmed','unconfirmed','unavailable') NOT NULL DEFAULT 'unknown'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;


LOCK TABLES `wa_contact_emails` WRITE;
/*!40000 ALTER TABLE `wa_contact_emails` DISABLE KEYS */;
INSERT INTO `wa_contact_emails` VALUES 
(1,1,'test@ma.ru','',0,'unconfirmed'),
(0,331,'test2@ma.ru','',0,'unknown'),
(0,332,'test3@ma.ru','',0,'unknown')
/*!40000 ALTER TABLE `wa_contact_emails` ENABLE KEYS */;
UNLOCK TABLES;


Данные для заполнения для примера, там их порядка 1000, и где то 800 из них идут с id 0.

А вот как выглядит эта таблица с ключами
CREATE TABLE `wa_contact_emails` (
  `id` int(11) NOT NULL,
  `contact_id` int(11) NOT NULL,
  `email` varchar(255) NOT NULL,
  `ext` varchar(32) NOT NULL DEFAULT '',
  `sort` int(11) NOT NULL DEFAULT '0',
  `status` enum('unknown','confirmed','unconfirmed','unavailable') NOT NULL DEFAULT 'unknown'
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

ALTER TABLE `wa_contact_emails`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `contact_sort` (`contact_id`,`sort`),
  ADD KEY `email` (`email`),
  ADD KEY `status` (`status`);

ALTER TABLE `wa_contact_emails`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

Дамп взял с чистой CMS.

Вопрос такого плана, в дампе который сливался на момент переноса сайта, 800 строчек с id =0 , возможно что это повредилось при создании дампа? или данная проблема была уже давно , раз новые созданные данные (а это емейлы пользователей ) которые создаются когда пользователи регистрируются, то есть они же не могли 800 емейлов за день набить. Как это проверить, и главное. Исправить только воссозданием структуры и связки ключей вручную?
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
не, mysqldump горячки не порет, это проверено.
база была кривая на момент дампа.
если нет дампа поактуальнее, починить базу и настроить бекап почаще чем один раз в пандемию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Насколько я помню, MyISAM не умеет внешние ключи вообще.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы