Dwarshuis Webdesigner
u bent hier: Home > joomla! > Joomla! MySQL

Joomla! MySQL

Joomla

MySQL problemen, irritaties, weetjes, tips

Database backup

Het maken van een kopie van je database (een 'back-up') zit technisch iets anders in elkaar dan het maken van een kopie van je bestanden (files). Als je een kopie maakt van een bestand, dan kopieer je de opeenvolging van alle enen en nullen naar een andere plek. Een beetje simpel gezegd, maar voor dit voorbeeld is het voldoende. Bij je database ligt het anders. Als je een backup maakt volgens de geijkte (geeikte) methode, dan maak je een zogenaamde export via phpMyAdmin. Er is een stoerdere manier, namelijk via zogenaamde shell access, maar dat is alleen voor de Zaligverklaarden.

Geen echte backup

Deze export is strict genomen geen kopie (of een back-up) van je database. Nee, het is een verzameling van opdrachten aan de database. Een voorbeeld is de INSERT opdracht: 'maak een table aan' (hou me ten goede als ik hier mis zit, ik ben geen database specialist). Dit is wel wat anders dan een serie enen en nullen kopieeren.

Problemen

Als je deze 'backup' nu wilt gebruiken om je gegevens naar een andere database om te zetten, kan het zijn dat als de database versie verschilt van de oorspronkelijk versie, dat je problemen krijgt, omdat de nieuwe database het commando niet begrijpt.

Gewoon kopieeren gaat niet

Hoeveel makkelijker zou het zijn, als je gewoon het bestand in het database systeem kon kopieeren naar de nieuwe lokatie. Helaas, het mocht niet zo zijn. Het kan wel, maar dat stelt specifieke eisen aan de filesystemen waar de bron en doel-databases op draaien.

Wel op Windows

Het goede nieuws is dat als je op je windows computer een database hebt draaien, dat het dan wel gaat. Stel je voor, je gebruikt JSAS (of één van de vele andere kant-en-klaar pakketjes met Apache webserver, PHP en MySQL database, een zeer populaire combinatie als het om internet toepassingen gaat), dan kun je gewoon de bestanden kopieeren. Elke tabel is een aparte folder (directory) met daarin bestanden. Je kunt, als je een bepaalde database vernield hebt, de bestanden van je back-up (die je natuurlijk gemaakt had) terug zetten.

De praktijk

Waar ik aanhoudelijke problemen mee heb, voor wat betreft MySQL databases is het importeren en exporteren van databases tussen een remote joomla installatie en de lokale versie die ik draai op JSAS. Heel vaak gaat het heel lang goed, en dan ineens zit er kennelijk iets in de database dat de boel dwarsboomt.

Applicaties die op de een of andere manier mySQL kunnen 'handelen' en die ik bestudeerd heb, zijn:

  • SQLyog (gewone en enterprise versie), een Windows applicatie waarmee je databases kunt synchroniseren
  • eskuel, een PHP applicatie
  • mysql-query-browser

Dé oplossing heb ik nog niet gevonden.

Ik ben een pessimist

Hoedt je voor de optimisten op forums die zeggen dat je 'gewoon' de database op je lokale JSAS kunt ontwikkelen, en dan 'even' inlaadt in de remote database, of die je vertellen dat je een website kunt verhuizen van de ene provider naar de andere door 'gewoon' even de database te exporteren en dan te importeren bij de nieuwe provider.

Vaak gaat dat wel goed, maar net iets te vaak gaat het niet goed.

Tip: lokaal en remote zelfde versie phpMyAdmin

Ik heb het zelf nog niet geprobeerd maar ik denk dat de volgende tip een oplossing is voor veel problemen: Installeer op je lokale server dezelfde versie als er remote draait. Volgens mij kun je lokaal zonder problemen diverse versies naast elkaar draaien, elk in een eigen directory.

Download de verschillende versie hier.

Tip: exporteer de database via phpMyAdmin in gedeelten

Soms krijg je een time out als de database te groot is.

Tip: hoe een MySQL database dump te maken die backwards compatible is

In het geval dat je shell access hebt tot je MySQL database, kun je op de volgende manier een dump van je database maken die backwards compatible is:

mysqldump --compatible=mysql40 databasenaam > db.sql

Tip : "#2006 - MySQL server has gone away"

Het importeren van een database: de ene keer gaat het probleemloos, een dag later lukt het ineens niet meer en krijg ik de volgende melding: #2006 - MySQL server has gone away.

MySQL-foutmeldingOorzaak: ik wilde mijn FireFox bookmarks graag online hebben, dus had ik ze via windows verkenner uit de juiste map (in de profiles) gevist en gekopieerd in een Joomla content item. Op deze manier had ik het online. Er zaten echter nogal wat rare karakters in en echt lekker zag het er niet uit. Ik had het content item verwijderd.

Het content item zat echter nog in de Joomla-prullebak en die werd natuurlijk ook geëxporteerd. Blijkbaar verpestte dit het importeren. Na het legen van de prullebak, waar het content item met alle vreemde karakters, die in de FireFox bookmarks verstopt zaten, in zat, ging het importeren weer probleemloos.

Zoeken

Surprise!

Voor op de achtergrond

Zie ook: