Премахване и инсталиране на дъмп в MySQL (mysqldump)

На теория всичко е просто - MySQL разполага с помощната програма mysqldump от кутията, която ви позволява да вземете копие на базата данни под формата на набор от SQL изрази.

В действителност всичко е много по-лошо. Факт е, че mysqldump работи криво с кодировки, различни от Latin1. Това означава, че експортирането на базата данни в UTF8, следвайки официалната документация (man mysqldump), тоест указване на --default-character-set=utf8, и след това импортирането й обратно не е възможно. Кодирането ще бъде нарушено поради "двойното преобразуване", извършено от помощната програма mysqldump - prooflink

Всъщност връзката по-горе има рецепта. Същността му е, че трябва да експортирате базата и след това да я импортирате в Latin1, независимо какво кодиране всъщност се използва. В този случай, разбира се, трябва да извадите файла с инструкции SET NAMES от * .sql ...

Друг важен момент, който трябва да имате предвид. Като правило вземаме дъмп на базата данни с името A и се опитваме да го прехвърлим в базата данни с име B. Съответно са възможни сблъсъци поради факта, че ще има споменаване на A във файла, създаден след експортиране в SQL заявки и DBMS команди, Необходимо е да замените всички срещания на A с B, по-долу под разреза ще има пример как да направите това с помощта на VIM.

И накрая, преди да заредите дъмпа, по-добре е да почистите напълно старата база данни. Можете да направите това по различни начини, но намерих за удобен за себе си малък шел скрипт (drop_all.sh), който автоматизира тази работа за мен:

И така, алгоритъмът

Последователността на стъпките е следната:

2) Отворете получения файл и го заменете. Запазваме промените.