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
haal ik eerst alle velden + typering op
Vervolgens haal ik met de query
haal ik alle overige indexen op
Maar nu wil ik die constriants.
Ik dacht ik haal met de query
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
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.
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 ]