Byt ut accessdatabas till mySQL

(Last Updated On: 15 januari, 2018)

När man bygger en enkel sida med databaskoppling kan det vara frestande att använda en accessdatabas.
Många har programmet access från microsoft och databasen kan ligga som en fil i samma mapp som filerna ligger så om man flyttar webbapplikationen mellan olika webbhotell eller från sin egen server till ett webbhotell är det bara att flytta med databasen när man flyttar filerna. Man behöver inte ändra i koden som ansluter till databasen.

Men om webbtjänsten sedan blir populär märker man snabbt accessdatabasens begränsningar. Access är en filbaserad databaslösning som inte är anpassad för dynamiska webbsidor. Om många vill hämta informationen från databasen samtidigt så fungerar det inte utan webbsidan visar istället ett felmeddelande t.ex;

[Microsoft][ODBC Microsoft Access Driver] Too many client tasks.

eller

System resources exceeded. etc.

Speciellt om koden inte är optimalt skriven och inte stänger databasanslutningarna korrekt eller liknande.

Så om man har en applikation som använder en accessdatabas som man vill lansera seriöst på webben bör man byta ut access till mySQL. MySQL däremot ligger på dedikerade databasservrar som är anpassade för att hantera många samtidiga accesser. Således fungerar MySQL utmärkt till just dynamiska webbsidor.

Om man redan har en massa information i sin accessdatabas kan man skapa en tom mySQL databas och använda programmet access to mySQL.

Med det programmet kan du ange sökvägen till din accessdatabas på hårddisken och sedan ange anslutningsuppgifter till den tomma mySQL-databas du skapat på ditt webbhotell och programmet flyttar sedan över informationen till din mySQL-databas.

Sedan behöver du ändra i koden så att webbsidan ansluter till mySQLdatabasen istället för access-databasen.

Antagligen ser din anslutning i din .asp kod till accessdatabasen ut något i stil med:

Dim connection_string
connection_string =
”Provider=Microsoft.Jet.OLEDB.4.0;” &
”Data Source=” & Server.Mappath(”databas.mdb”) & ”;” &
”User Id=användarnamn;” &
”Password=lösenord;”

Som då ska bytas ut mot följande för att istället ansluta till mySQL

Dim connection_string
connection_string = ”Driver={MySQL ODBC 5.1 Driver};” & ”Server=localhost;” & ”Port=3306;” & ”Option=131072;” & ”Stmt=;” & ”Database=mindoman_se;” ”Uid=användarnamn;” & ”Pwd=lösenord”

och där variablerna ersätts med informationen från din databas.

Anslutning till access kan också se ut enligt följande:

Set db = Server.CreateObject(”ADODB.Connection”)
db.Open ”DBQ=” & Server.Mappath(”db1.mdb”) & ”;Driver={Microsoft Access Driver (*.mdb)};”

som för att ansluta till mysql

Set db = Server.CreateObject(”ADODB.Connection”)
db.Open ”Driver={MySQL ODBC 5.1 Driver};” & ”Server=mysql443.loopia.se;” & ”Port=3306;” & ”Option=131072;” & ”Stmt=;” & ”Database=tillsalu_net;” & ”Uid=tillsalu@t84470;” & ”Pwd=dittmysqllösenord”

I koden måste connection-strängen måste stå på en och samma rad och bara är uppdelad på flera här för att få plats på bredden

Se till att uppdatera alla ställen där koden ansluter till databasen.

Sedan ser syntaxen för access och mySQL lite olika ut.
I mySQL finns t.ex. inget som heter TOP så om du hämtar ut värden från acessdatabasen med följande kod
SELECT TOP 10 date,title,ID FROM Tbladd ORDER BY date DESC

Blir koden i SQL istället:

SELECT date,title,ID FROM Tbladd ORDER BY date DESC LIMIT 0,10

Du kan läsa mer om SQL på w3school


Comments

One response to “Byt ut accessdatabas till mySQL”

Leave your response
  1. […] Så det kan helt klart rekomenderas att byta ut access till mySQL. […]