sql >> Databáze >  >> RDS >> Mysql

Počínaje verzováním schémat mysql bez přetěžování. Dobrá řešení?

Jednoduchý způsob pro malou společnost:vypište databázi do SQL a přidejte ji do svého úložiště. Potom pokaždé, když něco změníte, přidejte změny do souboru výpisu.

Poté můžete použít diff k zobrazení změn mezi verzemi, nemluvě o komentářích vysvětlujících vaše změny. Díky tomu budete také prakticky imunní vůči upgradům MySQL.

Jedinou nevýhodou, kterou jsem na tom viděl, je to, že musíte pamatovat na ruční přidání SQL do vašeho dumpfile. Můžete se trénovat, abyste si vždy pamatovali, ale buďte opatrní, pokud spolupracujete s ostatními. Chybějící aktualizace může být později bolestí.

To by se dalo zmírnit vytvořením nějakého propracovaného skriptu, který to udělá za vás, když se podrobíte subversion, ale na one man show je to trochu moc.

Upravit: V roce, který uplynul od této odpovědi, jsem musel implementovat schéma verzování pro MySQL pro malý tým. Ruční přidávání každé změny bylo považováno za těžkopádné řešení, podobně jako to bylo zmíněno v komentářích, takže jsme vyprázdnili databázi a přidali tento soubor do správy verzí.

Zjistili jsme, že testovací data končila na skládce a bylo docela obtížné zjistit, co se změnilo. To by se dalo vyřešit pouze dumpingem schématu, ale to bylo pro naše projekty nemožné, protože naše aplikace závisely na určitých datech v databázi, aby fungovaly. Nakonec jsme se vrátili k ručnímu přidávání změn do výpisu databáze.

Nejen, že to bylo nejjednodušší řešení, ale také vyřešilo určité problémy, které mají některé verze MySQL s exportem/importem. Normálně bychom museli vypsat vývojovou databázi, odstranit veškerá testovací data, položky protokolu atd., odstranit/změnit určitá jména tam, kde je to vhodné, a teprve potom jsme schopni vytvořit produkční databázi. Ručním přidáváním změn jsme mohli řídit přesně to, co skončí ve výrobě, po troškách, takže nakonec bylo vše připraveno a přesun do produkčního prostředí byl co nejméně bolestivý.



  1. Import velkého souboru SQL do MySql pomocí příkazového řádku

  2. Upravte omezení CHECK v SQL Server pomocí T-SQL

  3. Jsou proměnné PL/SQL v kurzorech efektivně stejné jako parametry vazby?

  4. Můžete se připojit k dílčímu dotazu s Doctrine 2 DQL?