[MySQL] Database kopieëren

Pagina: 1
Acties:

  • Barracuda_82
  • Registratie: September 2001
  • Laatst online: 19-12-2024

Barracuda_82

mkTime(), not war!

Topicstarter
Ik heb op een server een prefab-database staan die ik dmv een php-tool wil kopieëren (voor een nieuwe instantie van een site). Nu kan ik met geen mogelijkheid een eenvoudig functie in MySQL vinden die hier toe in staat is en op internet/GoT vindt ik alleen allerlei tools (zoals PhpMyAdmin) die kunnen kopieeren. Het enige wat ik bedacht heb is:
1. Een nieuwe database aanmaken
2. Alle tabellen van de prefab database inlezen
3. Al deze tabellen in de nieuwe database aanmaken
4. Alle data inlezen uit de oude database
5. Alle data in de nieuwe database plaatsen

Maar dit is volgens mij een veel te omslachtige (en foutgevoelige) oplossing. Zijn er geen eenvoudige manieren om een DB te kopieëren?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:17

Janoz

Moderator Devschuur®

!litemod

Er si inderdaad in php niet een eenvoudige functie die dit kan. Lijkt me ook niet geheel logisch om hiervan een kant en klare 'functie' te maken. Waarom moet het perse met php? Je kunt ook rechtstreeks zelf met mysql verbinden en een dump maken. Hierin vervolgens de database naam aanpassen en deze dump weer invoeren.

Uiteindelijk zullen toch al die 5 stappen doorlopen moeten worden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Barracuda_82
  • Registratie: September 2001
  • Laatst online: 19-12-2024

Barracuda_82

mkTime(), not war!

Topicstarter
Janoz schreef op dinsdag 20 maart 2007 @ 16:32:
Er si inderdaad in php niet een eenvoudige functie die dit kan. Lijkt me ook niet geheel logisch om hiervan een kant en klare 'functie' te maken. Waarom moet het perse met php? Je kunt ook rechtstreeks zelf met mysql verbinden en een dump maken. Hierin vervolgens de database naam aanpassen en deze dump weer invoeren.

Uiteindelijk zullen toch al die 5 stappen doorlopen moeten worden.
Ik wil hier graag een kant-en-klare functie van maken omdat het kopieëren van de prefab-database een stap is in een wizard voor het "live" zetten van een instantie van het product dat we aan het ontwikkelen zijn. Het kopieëren van alle directories met bestanden etc. is al gelukt, maar ik blijf nu gruwelijk op de database hangen.

  • Tepel
  • Registratie: Juni 2006
  • Laatst online: 17-08-2024
Er is inderdaad geen manier om een database te kopieren. Zelf heb ik het op de volgende manier gedaan:
1) Nieuwe database creeren
2) Tabellen kopieren d.m.v. SHOW CREATE TABLE
3) Data kopieren d.m.v. INSERT INTO db_new.tb1 (SELECT * FROM db_prefab.tb1)

no. 3 werkt alleen wanneer de databases zich op dezelfde host bevinden en er minimaal mysql 5 gedraait wordt. Het is niet de meest prachtige oplossing maar het werkt prima

0x7F


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 11:17

Janoz

Moderator Devschuur®

!litemod

Met "hiervan een kant en klare 'functie' te maken." doelde ik eigenlijk meer op de ontwikkelaars van php zelf, niet op jou.

Als dit trouwens een stap is tot het live zetten van een product, waarom gebruik je dan niet gewoon een sql script waarin je de database definitie zet? Deze kun je naast je sources bijhouden in je versiebeheer zodat je ook makkelijk ontwikelhistory bij kunt houden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'