Je kunt een Access-database eenvoudig omzetten naar een MySQL-database, net zoals dat naar Microsoft SQL Server eenvoudig kan. Dit omzetten is belangrijk omdat het gebruik van Access wordt afgeraden door Microsoft. In dit artikel laten we je zien hoe je jouw Access-database converteert naar MySQL.
Net als Microsoft SQL Server heeft MySQL het voordeel dat de server speciaal geïnstalleerd is voor deze ene taak: het hosten van databases. Dit is goed voor de snelheid van jouw website, wat meer bezoekers en mogelijk meer omzet kan genereren. het is daarom verstandig te blijven investeren in jouw website.
De converteertool die we in dit artikel gebruiken is Access To MySQL van Bullzip.com. Net als met het converteren naar MS SQL Server is het exporteren van de Access-database en importeren in MySQL vrij straightforward.
Let op: het is mogelijk dat je additionele software moet installeren, waaronder MySQL Connector/ODBC (32-bit) en Microsoft Visual C++ 2015 Redistributable (64-bitIn dit artikel ga ik ervan uit dat je de onderstaande Microsoft Access Driver connectie-string gebruikt, zoals uitgelegd in SQL Server Compact Edition (SqlCe) en Access databasetoegang met ASP:
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open " DBQ=D:\www\FTP-inlognaam\database\login.mdb;" & _ "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}"
Deze connectiestring moet je later nog aanpassen.
Access-database exporteren met Access To MySQL
Net als met het exporteren van Access naar Microsoft SQL Server moet je je Access-database via FTP gedownload hebben. Binnen jouw web-omgeving draait Access als een flat-file databasebestand, lokaal voor de website, en de MySQL-database is een externe server.
Omdat de tool om de database te converteren op jouw computer draait, moet de database daar ook staan. Het geconverteerde resultaat kun je dan naar phpMyAdmin uploaden.
Start het programma MS Access To MySQL Conversion en klik Next >.
Browse naar het databasebestand door te klikken op de drie puntjes ….
Selecteer het databasebestand en klik Open.
Klik Next >.
In het Destination Database-venster moet je een paar belangrijke instellingen maken! Selecteer hier in ieder geval InnoDB als Storage Engine en geef jouw MySQL-databasenaam op als MySQL Destination Database.
Dit scherm hieronder is een bevestiging van de hierboven gemaakte instellingen.
Laat alle tabellen geselecteerd of selecteer de tabellen die je wilt overzetten. Klik dan Next >.
De Transfer Options kun je op de standaard instellingen laten staan. Klik Run Now.
Het Conversion Result venster geeft een overzicht van het resultaat.
Controleer de database-export (.sql-bestand)
Start nu jouw favoriete teksteditor om het .sql
-bestand te openen. In mijn geval Visual Studio Code.
De actieve regel (regel 15) laat zien dat InnoDB als Storage Engine wordt gebruikt. Goed zo ?
Mocht er onverhoopt iets misgaan met het importeren, dan kun je in dit bestand altijd wijzigingen aanbrengen om dat op te lossen. Let wel, mijn .sql-bestand was een factor 10 kleiner dan de Access-database. Ik kan me voorstellen dat je het bestand niet wilt openen als deze 500 MB blijkt te zijn.
Nu het SQL-dumpbestand goed is gemaakt en dus feitelijk de Access-database is geëxporteerd, moet deze worden geïmporteerd in MySQL. Dat doen we hieronder met phpMyAdmin en later met MySQL client-tools op de command line.
.sql-dumpbestand importeren met phpMyAdmin
Log in op jouw MySQL-database via mysql.vevida.com.
Klik op Databases en daarna op jouw database.
phpMyAdmin geeft in dit geval een bevestiging van een lege database (Geen tabellen gevonden in de database), in jouw geval kan dat anders zijn. Klik nu op Importeren.
Klik op Bladeren om het eerder gemaakte testdump.sql
-bestand op te zoeken op jouw computer.
en klik op Starten.
Uiteindelijk geeft phpMyAdmin een bevestiging dat het importeren is gelukt:
Wist je dat we meer phpMyAdmin- en MySQL– FAQ-artikelen beschikbaar hebben? Kijk bijvoorbeeld eens naar het maken van een back-up van een MySQL-database via phpMyAdmin, MySQL back-up importeren via de command line, of onze instructievideo MySQL-database back-up terugzetten. Of wil je weten hoe je jouw MySQL-database optimaliseert?
Foutmeldingen oplossen tijdens het importeren
Het importeren kan stuklopen op kleine converteerfoutjes die zijn ontstaan. De meeste los je snel op in het .sql-bestand, waarin je de tekstuele gegevens zo kunt wijzigen. Andere fouten moet je even googelen om te kunnen oplossen.
Zo kreeg ik wel eens de volgende melding:
#1067 – Foutieve standaard waarde voor ‘tbl_testtabel’
De desbetreffende tabel stond in het bestand als:
tbl_testtabel` DATETIME DEFAULT 'null',
En alhoewel dit prima is voor Access-databases, kan dit helaas niet in MySQL. Het bovenstaande voorbeeld zou de tekst ‘null’ als standaardwaarde voor de kolom willen gebruiken. Als je de single quotes weglaat kan het wel::
`tbl_testtabel` DATETIME DEFAULT null,
Als je er na googelen niet uitkomt: neem gerust contact op, we helpen je graag verder.
.sql-dumpbestand importeren met mysql op de command line
Voor geavanceerde gebruikers! Op Windows 10 is Windows Subsystem for Linux (WSL) met mysql-client of MySQL WorkBench met command line programma’s vereist. Over deze laatste vind je meer informatie in ons artikel Back-up van een MySQL-database via de command line maken.
In de schermafbeeldingen hieronder is WSL gebruikt. Laat wsl
als opdracht weg om mysql.exe
in Windows 10 te gebruiken.
De commando’s spreken vrijwel voor zich. Je geeft een aantal parameters mee aan mysql.exe
en je pipet het bestand Documents\testdump.sql erin. Dat bestand en locatie kunnen bij jouw verschillen.
De belangrijkste parameters staan in deze tabel:
parameter | betekenis |
---|---|
-h | de MySQL-server hostnaam waarmee verbinding moet worden gemaakt (mysql.example.nl) |
-u | de gebruikersnaam (examplenl2) |
-p | het wachtwoord. Als het wachtwoord niet op de opdracht prompt wordt meegegeven, dan vraagt mysql.exe erom |
--database=databasenaam | De databasenaam (examplenl2) |
--ssl-mode=REQUIRED | staat niet in dit voorbeeld, maar wordt wel sterk aangeraden: Verbindt met MySQL over SSL |
De import is geslaagd, zonder foutmeldingen. Nu gebruik je vrijwel hetzelfde commando (minus < Documents\testdump.sql
) om in te loggen op de interactieve shell van MySQL. Hier kun je SELECT, UPDATE, INSERT en meer MySQL-opdrachten gebruiken net als in phpMyAdmin.
Gebruik bijvoorbeeld SELECT COUNT(*) FROM `databasenaam`;
om het aantal tabellen te tellen en het resultaat weer te geven. Dat resultaat is hier 228.
ASP-connectiestring aanpassen naar MySQL
Nu de database is geconverteerd moet weer de connectie-string worden omgezet. De connectie-string naar MySQL met ASP is iets anders dan naar een Microsoft SQL Server database vebinden. Je vindt een goed voorbeeld en informatie in ons FAQ-artikel ASP connectiestring naar een MySQL-database, mét SSL-beveiliging.
Verander de connectie-string (de hele regel met ‘Set Conn’ uit het eerste stuk van dit artikel) naar het volgende blokje code:
Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Provider=MSDASQL;DRIVER={MySQL ODBC Driver};" &_ "SERVER=mysql.example.nl;" &_ "DATABASE=examplenl2;" &_ "USER=examplenl2;" &_ "PASSWORD=P4ssword;" &_ "SSLMODE=REQUIRED;"
Uiteraard moet je jouw eigen databasenaam, sqlserver-hostnaam, (database-) gebruikersnaam en wachtwoord ingeven. Upload alles naar je website en zie dat het werkt. Hernoem je oude Access-database maar eens!
Let op: de kans bestaat dat je queries en statements moet aanpassen in jouw scripts, zodat ze voldoen aan de MySQL syntaxis. Pas hiervoor op, want dit valt buiten de scope van dit artikel!