Verbinden met MS Access database (Linux)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

OutSystems Developer

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan de vooravond van de implementatie van een gloednieuw applicatiehuis, waar OutSystems een belangrijke rol in speelt. Binnen deze rol word je als OutSystems Developer verantwoordelijk voor de ontwikkeling van uiteenlopende applicaties met OutSystems. Om het nieuwe applicatiehuis te implementeren

Bekijk vacature »

Veur Heur

Veur Heur

25/03/2020 15:19:27
Quote Anchor link
Ik werk al jaren voor een klant en een van de dingen die ik heb gedaan is een koppeling met een MS Access database (.mdb) in de PHP applicatie die ik beheer. Dit heeft jaren prima gedraaid op een Windows server echter gaan we nu over naar een aparte VPS voor de applicatie en blijft de Access database draaien op een aparte Windows 2019 server. De servers zijn middels een VPN aan elkaar verbinden en is er een share gemount op de Linux server. Middels het volgende script wil ik verbinding maken met de database:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
try {
    $db=new PDO("odbc:Driver=MDBTools; DBQ=/mnt/<dir>/<file>.mdb;");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $query=$db->query("SELECT * FROM <table>;");

    $return=array();
    if($query) {
        while($result=$query->fetch(PDO::FETCH_ASSOC)) {
            $return[]=$result;
        }
    }else $return['error']=1;
    
    //close
    $query=null;
    $db=null;
    
    print_r($return);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}


Op dit moment krijg ik de volgende fout: Connection failed: SQLSTATE[08001]: Client unable to establish connection: 1 Couldn't parse SQL (SQLExecute[1] at /build/php7.2-pRoOsC/php7.2-7.2.24/ext/pdo_odbc/odbc_stmt.c:260)
Gewijzigd op 25/03/2020 15:20:04 door Veur Heur
 
PHP hulp

PHP hulp

27/11/2020 01:00:53
 
Thomas van den Heuvel

Thomas van den Heuvel

25/03/2020 15:51:06
Quote Anchor link
Je houdt nu een aparte server aan om een MS Access database in leven te houden, en je legt een tunnel aan om erbij te kunnen?

:/

Tijd om de technologie-stack te vereenvoudigen?

Je hebt het ook over "jaren". Is er in al die tijd nooit een balletje over opgegooid?

Wellicht ook hoog tijd om deze technical debt in te lossen.
Gewijzigd op 25/03/2020 15:54:23 door Thomas van den Heuvel
 
Veur Heur

Veur Heur

25/03/2020 15:56:58
Quote Anchor link
De aparte server dient dan weer als RDP toegang naast toegang tot het MDB bestand. Sorry, MDB blijft een ding, heb ik geen controle over, is namelijk van een apart bedrijf en heb er mee te dealen. Het balletje dat nu is opgegooid is juist de splitsing om de web applicatie eindelijk eens op een Linux server te krijgen, ondanks dat het op Windows altijd vlekkeloos heeft gedraaid.

Maar hierover gaat deze topic niet, dus als je een oplossing hebt, graag.
 
Thomas van den Heuvel

Thomas van den Heuvel

25/03/2020 16:19:08
Quote Anchor link
Staat/n de juiste poort/en open (en welke zijn dit precies)? Heeft de machine waarmee je een connectie maakt hier toestemming toe? Als je geen verbinding kan maken zoals de foutmelding doet vermoeden is de Access-machine simpelweg onbereikbaar.

Voordat je de oplossing hebt/formuleert zul je eerst moeten uitzoeken wat er precies misgaat.
Gewijzigd op 25/03/2020 16:20:19 door Thomas van den Heuvel
 
Veur Heur

Veur Heur

25/03/2020 16:21:12
Quote Anchor link
Ik kan het bestand "zien" in de share en ook als ik het bestand lokaal haal krijg ik dezelfde melding. Het lijkt me dus geen rechtenkwestie. Krijg verder ook geen fouten dat ODBC niet op de server zou draaien.
 
Thomas van den Heuvel

Thomas van den Heuvel

25/03/2020 17:43:15
Quote Anchor link
Wild guess: wat als je de punt-komma uit je query verwijdert?
 
Veur Heur

Veur Heur

25/03/2020 17:46:39
Quote Anchor link
YOU DA MAN!! Vreemd genoeg lost dit het probleem op, waarbij de foutmelding lijkt te zeggen dat het bij de connectie ligt.
 
Thomas van den Heuvel

Thomas van den Heuvel

25/03/2020 19:18:05
Quote Anchor link
Dat zou je inderdaad denken, maar er staat ook "couldn't parse SQL", dus ik dacht kan nooit kwaad :p.

Mogelijk verschillen in (hoe) de drivers (onder water werken) dan ofzo in vergelijking met de oude situatie, who knows :).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.