Jeg har kjørt MySQL på min Windows-server i mange år. Først på en NT Server, men husker ikke nå hvilken MySQL-versjon det var. Jeg forsøkte da som uerfaren å oppgradere MySQL, uten hell. Jeg ga det dengang bare opp det hele, og det var heller ikke så viktig.
For noen år siden byttet jeg til Windows Server 2003 og installerte da MySQL 4.1 fra MySQL AB, men uten å ta med meg de gamle databasene (de var mest til testbruk).
For en ukes tid siden forsøkte jeg så oppgradere til mySQL 5.0, nå med mange databaser i drift. Stort sett bruker jeg MySQL Adminstrator til administreringen, og det er et særdeles bra GUI-program for Windows (ikke redigere my.ini i Notepad!). Det kommer nå som en pakke «MySQL Tools for 5.0». Derfra kunne jeg fjerne den gamle servicen og legge inn den nye. Det hele startet opp perfekt. Men i følge dokumentasjonen på nettet skulle jeg også gjøre en oppgradering av systemdatabasen (mysql) ved å kjøre mysql_upgrade.
Problem nr 1: Den ville ikke kjøre og klaget over at «C:\Program» ikke var kjørbar. Med noe erfaring fra slike kommandolinjeprogrammer forstor jeg raskt at det var på grunn av mellomrommet i mappenavnet. Programmet forsøkte kjøre et annet program ved å kalle det opp med en filepath uten hermetegn. Utviklere som er vant til å programmere for DOS eller Linux glemmer dette. På Windows skal alle filepaths du ikke kjenner (hardkodet) alltid settes i hermetegn. Ellers går det galt. «Program Files» er faktisk den mappen både installasjonsskriptet for MySQL og Windows selv anbefaler. Da må man ikek bli overrasket over at en bruker har «valgt» å bruke mellomrom i mappenavnet.
Jeg forsøkte løse dette ved å kopiere Bin til C:\Windows\temp og kjøre derfra. Det gikk bra, et stykke. Dvs. jeg trodde det gikk bra. Problemet var at MySQL Administrator ikke lenger kunne redigere brukerne. Jeg valgte å legge tilbake backup og installere mySQL 4.1-servicen igjen. Så gjorde jeg kanskje noe dumt, men jeg forsøkte bruke den oppgraderte databasen med MySQL 4.1-motor. Det gikk helt fint, ingen problemer. Men det var kanskje ikke så lurt, siden mysql-skjemaet (systemdatabasen) trolig var endret litt.
Problem nr 2: I dag var det tid for et nytt forsøk. Jeg forsto at jeg også måtte kopiere med scripts-mappen til den midlertidige mellomromfrie mappen min, samt sette den som «basedir» i i kommandolinje-opsjonenen. Men nei, den kjørete nepep alt den skulle fordi det kom en feilmelding om at en kolonne den forsøket opprette allerede fantes. Det burde være greit, ignorere dette og gå videre. Opsjonen –force skulle dessuten sørge for nettopp det. Men nei. MySQL Administrator ville ikke la meg redigere brukerne.
Etter litt lesing fant jeg at mysql_upgrade skulel kalle opp et skript kalt mysql_fix_privilege_tables.sql. Da jeg så fant ut hvordan kjøre det manuelt fra kommandolinje, løste det seg.
mysql < ..\mysql_fix_privilege_tables.sql
Konklusjonen er at å installere et databasesystem, være seg MySQL Community eller SQL Server Express trolig er helt kurant for PC-bruker Hvermansen. Å oppgradere krever derimot i det minste at man finner frem og leser instruksjonene nøye, og ikke alltid er det nok heller. Man har nemlig ikke råd til å feile totalt, for da har man ikke noe data. I det minste må man vite hvordan nedgradere og legge tilbake backup. Helst bør man jo få det til og oppdage at de gamle, gode dataene dukker opp i ny drakt under en oppgradert «motor».
Jeg nøler ikke med å anbefale MySQL på Windows, også den «frie» nedlastbare Community-utgaven fra MySQL AB. Dette gir deg en profesjonell «high performance»-database, spesielt hvis du setter opp InnoDB som default lagringsmodul. Med MySQL Administrator og kanskje PHPmyAdmin har man også glimrende administrasjonsverktøy.
Med PHP også på plass har man så tilgang en en enorm mengde glimrende applikasjoner. Med ODBC i tillegg kan MySQL-databasen også brukes til de fleste programmer basert på ODBC-grensesnittet.
Med SQL Express-utgaven av Microsofts berømte database har vi nå fått en meget billig og god database også derfra. Jeg har den selv. Jeg forstår også de som satser på den for egne ting, lokalt eller på egen server. Likevel vil jeg si at ingen slår MySQL på kjapphet, enkelhet og stabilitet i drift. Å adminsitrere SQL Server (Express) krever et gigantisk, kompliser og tregt administrasjonsprogram, sammenliknet med f.eks MySQL Administrator. Kanskje Pervasive SQL er like bra, men ukjent og kanskje ikke kompatibel med alt.
Litt synd da at oppgradering av MySQL heller ikke er helt knirkefritt. Men det går an. Les, lær, ha backup, forsøk, søk råd. Jeg har gjort mine erfaringer og meldt inn «bugs». «Footer»-teksten her på siden bekrefter at PHP nå vet at MySQL er versjon 5.0.
Finnes det, mon tro, et miljø for PHP/MySQl på IIS/Windows i Norge?
Kommentarer
6 kommentarer til “MySQL på Windows”
Skal du kjøre MySQL, kjør det på Linux! Det vil spare deg for masse ekstraarbeid, for det er mye lettere å sette opp.
Av alt det jeg kjører er det bare PHP og MySQL som ville kunne kjøre på Linux. Det er fordi det kjører på Windows at jeg bruker det. Jeg verken kan eller VIL bruke Linux. Det er som kjent et spørsmål om tro og religion.
Jeg mener det er et spørmål om hva som funker og hva som ikke funker. MySQL på Linux funker og IIS på Windows funker. Hvorfor ikke kjøre det som fungerer best? Det er ingenting i veien for å kombinere de to.
Kan du ikke Linux skjønner jeg at du er skeptisk. Men når det gjelder MySQL, PHP og Apache og andre deler som Linux er bra på, er det verdt et forsøk.
Denne bloggen kjører på PHP, MySQL, IIS of Windows. Og funker. Jeg anbefaler gjerne løsningen for den som har Windows å kjøre på.
Joda, den funker fint den.
Men nå anbefaler stort sett alle eksperter på PHP og MySQL at man kjører det på Linux. Men det er klart – skal man først kjøre noe på Windows, er det ikke noe bedre enn å kjøre åpen kildekode- baserte løsninger (kanskje bortsett fra Apache). Sånn sett har du jo valgt den beste løsningen å kjøre på Windows, IMHO.
MySQL får en del kritikk, men for mitt bruk synes jeg den er letthåndterlig og enkel å bruke.
I dag fikk jeg tilbakemelding fra MySQL «Bug Database»: