Mysql-migráció ez, és hogyan kell végrehajtani egy egyszerű php-script, webdevkin

Fejlesztése során egy webes alkalmazás nem egyszer, hanem egy csapat, és / vagy több számítógép között, előbb-utóbb szembe a problémával a szinkronizálás a projekt kódot és az adatbázisok. Forrás vezérlő van egy verziókövető rendszer, különösen a git. és az adatbázis migráció feltalálták.







Sok kész a különféle eszközöket, amelyek foglalkoznak a migráció, de!

Nagyon gyakran, minden, amit szeretnénk - ez csak öntsük az alapja a változások, amelyek által egy másik fejlesztő vagy magad egy másik gépen. És miközben előnyösen költötte minimális erőfeszítéssel, beleértve a tanulmányi és felállítása egy ismeretlen rendszert. Ezen kívül nem mindig van teljes hozzáférést a szerver telepíthető a hozzá eszközöket.

Ezért minden érdeklődő megtudhatja, hogyan tedd magad egy egyszerű segédprogram, írott ötven sornyi php-kód kérése a cikkben.

Az ötlet a migráció

Az ötlet igen egyszerű: a projekt hozzon létre egy külön mappát az SQL, SQL, hová tegye a fájlokat a migráció, azaz a szkriptek, amelyek megváltoztatják az az adatbázis tartalmát, valamint egy fájl? Php, hogy ezek a migráció és a tekercs.

Meg kell figyelembe venni két dolgot: először minden vándorlási kell végezni pontosan egyszer, másrészt a szigorú sorrendben. Ez ésszerű és szükséges, mert ha eljutunk a kollégák 2 migráció, amelyek közül az egyik létrehoz egy felhasználói tábla, a másik felveszi a teszt felhasználó, azt akarjuk, hogy végre a szkripteket, ebben a sorrendben, és nem adunk adatbázis a több mint egy alkalommal.

A probléma a újrafuttatnod migrációs döntünk, írásban külön táblázatban már töltött szkriptek, és a végrehajtás érdekében olyan egyértelmű szabályok elnevezésére sql-fájlt. Hogyan oldjuk meg a kódot, azt később látni fogjuk, de most indulunk a készítmény a vizsgálat vándorlások magukat (a forrása minden migráció és php-script végén a cikk)

Készítsen Test sql szkriptek

Engedje meg, hogy egy teszt nevű adatbázis teszt. Mi már évek óta dolgozik egy darabig, és úgy döntött, hogy hajtsák végre a migrációt. Van egy ésszerű ökölszabály az első migrációs tartalmaznia kell egy teljes lerakó a létező entitások az adatbázisban. Tisztázza: a migráció segítségével nem csak, hogy következetesen bővíteni a meglévő alap, hanem roll ugyanezt adatbázist az alapoktól, például az új embereket, hogy a csapatnak.

Megkezdése előtt a migráció, azt hiszem, hogy az adatbázisban már létezik, így a migráció sehol megadott adatbázis neve. Véleményem szerint ez jó, abban az értelemben, hogy az egyik gép programozó tud működni a különböző adatbázisokat és különböző változatai. Ezért létre egy alapot a script nem lesz.

Egy teszt, hogy ezt az események menetét.
Az első tekercs a migráció a meglévő adatokat és létrehozza asztal változatban - ez már tartalmazza a szkript.






A második létrehoz egy felhasználói tábla három mezővel: id, e-mail, jelszó.
A harmadik három plusz felhasználóinak vizsgálati jegyzőkönyvek.
A negyedik hozzáad egy új oszlopot az aktív felhasználók számára.

Írjuk be az első migráció billenő adatbázis és tábla változatai. Tegyük fel, hogy abban az időben a bevezetése migrációs van az áru asztalnál egy pár termékeket. Meg kell dobni a forgatókönyvet, és ugyanabban a forgatókönyvet, hogy adjunk egy asztal változatban. Ennek eredményeként, a fájl fog kinézni.
0000_base.sql

A fájl látjuk a szerkezet az áruk és 2 soros adatok, valamint a változatok. Ez a tábla tartalmazza 3 oszlop: id elsődleges kulcsot, neve - a fájl nevét a migráció, - mely a napjától gördülő. Amint lehet képzelni, a változatok leszünk hozzá új gördülő sorban áttérés után. Közben a maradék 3 hoz létre a migráció.

Ügyeljen arra, hogy a fájl elnevezési konvenciók - fontos részét képezi.
  • 0001_base.sql
  • 0002_add_users.sql
  • 0003_insert_data_into_users.sql
  • 0004_add_column_active_to_users.sql

Sorszámnevek elején minden fájl kell rendezni a fájlokat. Csak ebben az esetben a migráció lesz végzett a helyes sorrendben. Miután _ egy rövid leírást a migráció, amelyeket meg kell kizárólag a kényelem, hogy megértsék, mit tesz egy adott script, de nem nézett rá.

A mi esetünkben azt fogjuk feltételezni, hogy az átállás nem lesz több, mint 9999 darab, és a szám mindig áll 4 számjegy. Például a 10. lesz az úgynevezett migrációs 0010_description és a 101-I - 0101_description.

Most már készen állunk, hogy írjon egy php-script, hogy végre a migráció - migration.php.

Írásban php-kód futtatását migrációk

Úgy gondoljuk, hogy meg kell tudni csinálni.
  • Először is, sorolja fel az összes sql sql-fájlokat a mappában.
  • Másodszor, kitaláljuk, melyik közülük korábban Nakata (vesd össze ezt a listát, hogy mi van az asztalon verzió).
  • Harmadszor, öntsük a tartalmát a kijelölt fájlokat az adatbázisba egyidejűleg írásban a változat a nevüket.
Talán az összes többi művelet viszonylag egyszerű, elemzi őket során a játék.
Írhatsz kódot.

migration.php keret, az alapvető konstansok és függvények

Meg kell írni bizonyos funkciók kapcsolódni az adatbázishoz, és az általános logikája a forgatókönyvet. Migration.php hozzon létre egy fájlt sql Kinema a helyen, a migráció és a levelet a következők szerint:

Mi megy át a kódot.
  • Először is kijelentem állandó kapcsolatot az adatbázis és a nevét változatai az asztalra (ez lesz a továbbiakban a kódot többször is).
  • connectDB függvény egy mysqli objektum együttműködni az adatbázisban.
  • getMigrationFiles ($ conn) ad egy listát a vonatkozó, még nem fejeződött be a migráció.
  • vándorolnak ($ ​​conn, $ file) dob egy migrációs - a fájl nevét.
Ezután a logika is.
  • Mi csatlakozni az adatbázishoz, és kap egy listát az aktuális migráció.
  • Ha üres, csak egy üzenetet jelenít meg, hogy az adatbázis naprakész.
  • Ha a migráció fájlok ezután indul az egyes vándorolnak funkció megjeleníti a fájl nevét az információkat. És a végén írunk pozitív üzenet, hogy a migráció befejeződött.
Most szükségünk van egy kódot getMigrationFiles ()

Akkor a függvény glob húzza az összes fájlt az adott mappában a kívánt maszkot * .sql.

Akkor meg kell érteni, nem az első alkalommal, hogy mi fog roll migráció. Amely csak úgy lehet meghatározni a jelenléte a táblát az adatbázisban változatban. Emlékszünk, hogy jön létre az első migráció. Ha a lekérdezés mutatják táblázatokat a vizsgálat, mint a „változat” visszatér egy üres listát, akkor a táblázat még a változó $ firstMigration levelet az igaz és a visszatérés a funkció, a teljes listát a fájlokat.

Ha a változatok tábla létezik, akkor vegye ki a fájlok listáját - már befejeződött a migráció. És visszatért a funkció fájlok, amelyek nem változatok táblázatban. Ez segít array_diff.

Az összes szükséges files mi maradt még, hogy kitaláljuk, hogyan kell dobni a tartalmát az adatbázisba - jellemző vándorolnak.

Ki az érdeklődés Ezt a funkciót csak shell_exec ($ parancs) - a végrehajtás egy string $ parancsot a terminálban. Öntsük a tartalmát az SQL-fájlt az adatbázis lehet a csapat
mysql -uuser -ppassword -h gazda -D adatbázisban