[php][mysql] Structuur sync tussen meerdere databases

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Beste Tweakers,

Ik ben werkelijk verbaasd dat ik deze vraag hier moet stellen, maar ik kan er werkelijk niks over vinden.
Ik probeer vanuit 1 source database te developpen en dan zou ik graag de veranderingen in de SQL structuur (dus niet in data) syncen naar een andere database.

Nu vond ik een Perl script MysqlDiff... die doe bijna wat ik wil echter dat script is uit 2003, en ondersteund geen constraints.

Op internet zijn er genoeg tools te vinden die bijna doen wat ik wil , maar deze ondersteunen geen van alle constraints. of tot max MySQL 4.1.
Ik draai mysql 5

Nu ben ik zelf al weer begonnen aan een script die dat dan maar gaat doen, maar voordat ik verder ga, toch hier even de vraag of iemand zoiets als eens ergens is tegengekomen.

Ik heb ook even gekeken naar MySQL workbench maar die is zwaar ALPHA en vetrouw ik niet helemaal.

[Getver ik zag dat ik niet kan spellen in de titel]

Ben maar begonnen aan een script

Met de query
code:
1
DESC `tabelnaam`

haal ik eerst alle velden + typering op

Vervolgens haal ik met de query
code:
1
SHOW INDEXES FROM `tabelnaam`

haal ik alle overige indexen op

Maar nu wil ik die constriants.
Ik dacht ik haal met de query
code:
1
SHOW CREATE TABLE `tabelnaam`

de SQL code op.

Vervolgens split ik op \n en remove ik \r
Ik loop dan over alle regels en probeer met de volgende preg_match de onderdelen op te halen
code:
1
$pattern = "/CONSTRAINT\s`(.*)`\sFOREIGN\sKEY\s\(`(.*)`\)\sREFERENCES\s`(.*)`\s\(`(.*)`\)\sON\sDELETE\s(.*)\sON\sUPDATE\s(.*)/";


Nu lijkt dat wel redelijk te werken maar nu vraag ik me af dat of je een specifieke volgorde nodig hebt want je kunt natuurlijk pas een constraint aanleggen als de foreign tabel bestaat.

Shit,
Misschien moet ik eerst van alle tabellen de structuur uitlezen en dan via een array sorteren.
En dan de tabellen gaan aanmaken / wijzigen.

[ Voor 40% gewijzigd door vorlox op 18-10-2007 18:43 ]


Acties:
  • 0 Henk 'm!

  • Duroth
  • Registratie: Juni 2007
  • Laatst online: 27-04-2016

Duroth

No rest for the tweaked

Ik probeer vanuit 1 source database te developpen en dan zou ik graag de veranderingen in de SQL structuur (dus niet in data) syncen naar een andere database.
Misschien Hoogstwaarschijnlijk denk ik hier veel te makkelijk over, maar b.v. met PHPMyAdmin kan je toch heel makkelijk een printje van de database krijgen, met of zonder data? In dat geval is het toch een kwestie van dat tekstbestandje even laten query'en in een andere database? Desnoods zoek je even het script op uit PHPMyAdmin die dat verzorgt, en pas je dat wat aan naar je wensen...

Acties:
  • 0 Henk 'm!

  • vorlox
  • Registratie: Juni 2001
  • Laatst online: 02-02-2022

vorlox

I cna ytpe 300 wrods pre miute

Topicstarter
Uh hehe ja ik wil een soort upgrade en niet een replace.
De data zou eigenlijk gewaarborgd moeten worden.

Nog even een vraagje misschien snap ik het niet of kan ik het niet vinden in PhpMyAdmin
Maar phpmyadmin kan toch niet upgraden??? ofwel want anders ben ik dom bezig

Hmm ik vind net een link over SQLyog 'Structure Sync Tool'
Dat komt in de buurt maar is alleen voor win32 en structure sync zit niet in de community edition

[ Voor 66% gewijzigd door vorlox op 18-10-2007 19:36 ]


Acties:
  • 0 Henk 'm!

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 19-09 16:51

LauPro

Prof Mierenneuke®

Heb je gekeken naar de replicatie features in MySQL zelf?

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Heb je al naar navicat (http://www.navicat.com) gekeken? Deze ondersteund mysql 5 en heeft een structure sync tool.