Задавайте вопросы, мы ответим
Вы не зашли.
Есть база MySQL. В ней есть таблица "primer" - в этой таблице было утеряно несколько записей, которые находились самыми первыми (записи сортируются по столбцу ID). Так вот, записи были с 1-3000, теперь же стали с 200-3000, т.е. строки с 1-199 удалены. Есть резервные сохраненные файлы - primer.MYI и primer.MYD, в которых есть данные об этих строках. Как можно восстановить данные из этих файлов в текущую таблицу? Желательно путем запроса в базу... Спасибо!
Неактивен
переименовать старые primer.MYI primer.MYD в oldprimer.MYI и oldprimer.MYD
Далее INSERT INTO primer SELECT * from oldprimer WHERE ID<=199;
Неактивен
[DB] ERROR 1146: Table 'db.old_primer' doesn't exist
Что делать?
Неактивен
таблица будет называться oldprimer без подчеркивания, если Вы так назовете Файл. Не забудьте сменить владельца файла на mysql
Неактивен
Прошу прощения, но файл я назвал именем с подчеркиванием и запрос соответственно выполняю с использованием имени с подчеркиванием. Но как сменить владельца файла? Спасибо.
Неактивен
chown mysql old_primer.*
Неактивен
Что с этим нужно сделать?
Неактивен
в консоли набрать
если Вы используете ftp, то у него должно быть в менюшке смена владельца, если нет, то должна быть смена прав - сделайте доступ для всех на чтение и запись
Обратите внимание на большие и малые буквы в имени файла
Неактивен
Спасибо. Получилось. И еще вопрос. Как сделать выборку вставки таких значений (из резервной таблицы), которых нет в существующей? Опять же по ID. К примеру, в существующей таблице нет значений ID с 209-287, с 289-301 и т.д. Чтобы все это выполнить одним запросом... Спасибо!
Неактивен
WHERE (ID>=209 AND ID<=287) OR (ID>=289 AND ID<=301)
Можно так WHERE ID NOT IN (SELECT ID from исходная_таблица)
Неактивен
INSERT INTO primer SELECT o.* from oldprimer o LEFT JOIN primer p ON o.id=p.id WHERE p.id IS NULL;
Неактивен
Большое вам спасибо! Можно закрывать.
Неактивен