Avatar billede sorenriis Nybegynder
28. januar 2006 - 20:28 Der er 35 kommentarer og
1 løsning

DBExpress giver Access violation-fejl

Jeg er igang med at lave et program, som arbejder med en MySQL-database.

Jeg får imidlertid engang i mellem denne fejl:
"Access violation at adress 00AA9334 in module dbexpressmysql.dll. Read of adress 00000002."

Den skriver imidlertid ikke noget om hvor i programmet fejlen opstår (linje eller noget lign), så hvordan finder jeg lige ud af hvor den fejl opstår?

Alle mine SQL-querys er af denne type:
SQLQuery.Close;
SQLQuery.SQL.Clear;
SQLQuery.SQL.Add('SELECT * FROM userlist');
SQLQuery.Open;
SQLQuery.First;
  while not SQLQuery.EOF do
    begin
      try
      .........
      except
      end;

Hvad kan fejlen skyldes?
MySQL-serveren (v5.0) køres på samme maskine som programmet afvikles fra.
Avatar billede kroning Nybegynder
28. januar 2006 - 20:30 #1
Har du en DBExpress der understøtter MySQL version 5?
Avatar billede sorenriis Nybegynder
28. januar 2006 - 20:33 #2
Godt spørgsmål...
Jeg har Delphi 2005, så det har jeg sikkert ikke i kraft af at MySQL5 er ret ny.

Kan jeg hente en opdatering til DBExpress-modulet et sted, så det understøtter MySQL5?
Avatar billede kroning Nybegynder
28. januar 2006 - 20:38 #3
Jeg har læst og hørt at der ikke findes en DBExpress der understøtter MySQL versioner over 4.0.x, så der burde slet ikke virke når du bruger MySQL version 5.
Avatar billede sorenriis Nybegynder
28. januar 2006 - 20:41 #4
Det fungerer nu fint - bortset fra at disse access-fejl dukker op.

Men hvis DBExpress kun understøtter op til v4.0.x, plus at jeg bruger libMySQL.dll fra MySQL5 (som VendorLib), så virker det da mystisk at det overhovedet virker.

Forslag til hvad jeg så gør nu? :-)
Avatar billede kroning Nybegynder
28. januar 2006 - 20:44 #5
Hvilken version af dbexpress dll´en bruger du?
Avatar billede sorenriis Nybegynder
28. januar 2006 - 20:49 #6
Jeg har ikke valgt noget version. Jeg brugte bare den Delphi2005 selv vælger som standard.

Søgte lige på filen og kiggede under dens egenskaber:
Borland dbExpress MySQL 4.0.xx driver
:(

Mystisk at det overhovedet virker så.
Er der ingen måder det kan komme til at virke med MySQL5?
Avatar billede kroning Nybegynder
28. januar 2006 - 20:56 #7
Min er også en 4.0.xx med fil version 7.1.1523.17956.
Jeg har spurgt på borland.dbexpress nyheds gruppen for lang tid siden men fik ikke noget svar, om der kommer en fra borland ved jeg så ikke.
Avatar billede sorenriis Nybegynder
28. januar 2006 - 21:01 #8
Ved du om der er nogen større sikkerhedsrisiko ved at bruge MySQL Server 4.0.26 (som er den sidste v4.0-udgivelse)? Denne burde vel virke uden problemer med DBExpress?

Jeg bruger ikke nogen avancerede MySQL-kommandoer og har ikke specielt store tabeller, så hastighedsmæssigt mærker jeg næppe noget :)

Er du iøvrigt 100% sikker på at den access-fejl skyldes at jeg bruger MySQL5? :-)
Avatar billede kroning Nybegynder
28. januar 2006 - 21:10 #9
Jeg har ikke sat mig ind i sikkerhedsrisikoen ved brug af MySQL så det kan jeg ikke svare på.
Jeg har brugt MySQL version 4.0.17 siden den kom frem sammen med dbexpress og det har kørt 24/7 uden nogen problemer overhovedet.
Om din fejl skyldes at du bruger MySQL 5 ved jeg ikke men hvis du prøver med 4.0.xx og fejlen forsvinder så var det nok derfor.
Og så syntes jeg iøvrigt at der er for dårlig at der ikke er kommet en ny dbexpress driver fra borland.
Avatar billede sorenriis Nybegynder
28. januar 2006 - 21:15 #10
Ok.. Jeg prøver lige at smide v4.0.26 ind på min server.
Vender tilbage med resultatet :)
Avatar billede kroning Nybegynder
28. januar 2006 - 21:22 #11
Ja gør endelig det, det kunne jo være man skulle opdatere til version 4.0.26 den er jo næsten 2 år nyere :-)
Avatar billede sorenriis Nybegynder
28. januar 2006 - 21:31 #12
Så er der installeret MySQL 4.0.26..
Og ligemeget hvor meget jeg end prøver, så kan jeg ikke få de "violation-access"-fejl frem igen :)

Hvis du lige afgiver svar, så skal du få nogle points.
Nu har jeg da ihvertfald fundet ud af hvor mit problem lå.
Avatar billede kroning Nybegynder
28. januar 2006 - 21:50 #13
k, der findes en del andre komponenter som understøtter version 5, nogle koster men andre er vist gratis.
Avatar billede sorenriis Nybegynder
28. januar 2006 - 21:51 #14
Men du vil stadigt anbefale at bruge DBExpress?
Ihvertfald meget nemt at arbejde med :)
Avatar billede kroning Nybegynder
28. januar 2006 - 22:23 #15
Ved ikke om jeg vil anbefale dbexpress, det er jo for dårlig at der ikke kommer opdateringer. Men det opfylder mine behov i oøjeblikket.
Avatar billede sorenriis Nybegynder
28. januar 2006 - 23:02 #16
OK.. Du skal have tak for hjælpen ihvertfald.
Avatar billede vint Nybegynder
16. april 2006 - 23:47 #17
Hej.

Jeg bruger også MySQL v. 4.0.26 og får de dersens Access violation fejl.

Er der noget, som jeg skal være opmærksom på ved brugen heraf?
Avatar billede sorenriis Nybegynder
16. april 2006 - 23:52 #18
Det burde der ikke være.
Prøv at tjek din dbexpress.dll (højreklik og vælg egenskaber). Der står i den hvilken version af MySQL den understøtter.
Avatar billede vint Nybegynder
16. april 2006 - 23:57 #19
Hej.

Jeg kan ikke finde den fil, som du omtaler.

Jeg kan fx finde dbexpmysql.dll. Den har filversion nr. 9.0.1761.24408
Avatar billede kroning Nybegynder
17. april 2006 - 00:40 #20
Hvad siger beskrivelsen til den dbexpmysql.dll? Min siger f.eks.:
"Borland dbExpress MySQL 4.0.xx driver"
Avatar billede vint Nybegynder
17. april 2006 - 11:16 #21
Det samme gør min.

Hvilke filer er nødvendigt at inkludere i mit projekts bibliotek udover libmysql.dll og dbexpmysql.dll?
Avatar billede vint Nybegynder
17. april 2006 - 11:59 #22
Jeg må indrømme, at det virker fint, da jeg prøvede at lave en MySQL 4.0.26 installation på min bærbare maskine og lavede et testprogram i Delphi der.

Om installationer / afinstallationer af andre databaseprogrammer, herunder MySQL 5 mv., har givet anledning til problemer i opsætning eller lign. ved jeg ikke, men det virker mystisk, at det virker på min bærbare, men ikke på min stationære
Avatar billede kroning Nybegynder
17. april 2006 - 12:00 #23
Ikke andre, bare du sørger for at libmysql.dll er den der hører til den MySQL version du benytter så burde det virke. Jeg plejer at smide de 2 dll´er i samme mappe som min exe fil så er jeg sikker på at det er de rigtige der bruges.
Og du har vel sat SQLConnection til at benytte de rigtige dll´er?
Avatar billede kroning Nybegynder
17. april 2006 - 12:03 #24
Jeg er iøvrig i gang med at rette denne her til at kunne bruges med MySQL 5.1, og bygge en lille simpel klasse omkring den. Det har dog nok ingen interesse for dem der vil bruge db?? komponenter.
http://www.fichtner.net/delphi/mysql.delphi.phtml
Avatar billede vint Nybegynder
17. april 2006 - 12:13 #25
Jo, den er jeg da interesseret i, når den er færdig.

Jeg ville gerne have vist indholdet af min DB i en StringGrid. Men det kan ikke umiddelbart lade sig gøre, kan jeg se.

Jeg har fundet ud af, at det er en unidirectional dataset. Det gør det mere besværligt... Betyder det i øvrigt, at man ikke kan gå fra post 4 til post 3 i end atabase uden videre?
Avatar billede kroning Nybegynder
17. april 2006 - 12:19 #26
Hvis du benytter en TClientDataSet kan du gå frem og tilbage som du har lyst, du kan bruge en TDataSetProvider til at få alle data fra din Query flyttet over i din TClientDataSet.
Avatar billede vint Nybegynder
17. april 2006 - 12:28 #27
Okay tak Kroning.

Kan jeg give dig points, når jeg ikke har oprettet tråden? (Jeg vil gerne give dig points)
Avatar billede kroning Nybegynder
17. april 2006 - 12:31 #28
Et tak er da ganske fint :), så points er ikke nødvendig.
Avatar billede vint Nybegynder
17. april 2006 - 13:26 #29
Jeg siger i hvert fald mange tak.

Kan også sige, at efter jeg har geninstalleret MySQL 4.0.26 samt Delphi, så virker det oggså på denne maskine nu. Så det er helt super...

Men kan jeg ikke lige presse citronen og få dig til at vise et lille eksempel på, hvordan en TClientDataset bruges til hhv. at hente data fra en database og derefter sætte data ind i en DBGrid.

Bare en kort introduktion vil også være fint nok, så kan jeg selv eksperimentere og lede videre. Jeg skal selvfølgelig have fat i SQL-sætninger - det er intet problem, men hvordan / hvornår de skal bruges i forhold til TClientDataSetet er nyt for mig.
Avatar billede kroning Nybegynder
17. april 2006 - 14:30 #30
Jeg har lavet en lille demo der viser hvordan:
http://www.kroning.dk/DbxDemo.zip
Avatar billede vint Nybegynder
17. april 2006 - 14:36 #31
Når jeg retter i programmet, således at

hostname bliver = '127.0.0.1'
Database bliver = 'test'
Brugernavn bliver = 'root'
Password bliver = ''

og kører programmet samt klikker på knappen sker flg.

En meddelelsesboks kommer frem med beskeden "forbindelse OK"
Når jeg klikker OK kommer en fejlmeddelelse:

"Der er opstået en fejl i forbindelsen til serveren. Fejl: dbExpress error: [0x0003]: Invalid field type
Avatar billede kroning Nybegynder
17. april 2006 - 15:52 #32
Og du bruger MySQL version 4.0.26 ?
Avatar billede kroning Nybegynder
17. april 2006 - 15:54 #33
Mit gæt er at det enten er libmysql.dll eller dbexpmysql.dll der er forkert version.
Avatar billede vint Nybegynder
17. april 2006 - 16:59 #34
Ja jeg bruger MySQL 4.0.26

libmysql.dll er den version, der ligger i c:\mysql\bin\

og

dbexmysql.dll er den, som vi fik verificeret som værende korrekt før med beskrivelsen: "Borland dbExpress MySQL 4.0.xx driver"
Avatar billede kroning Nybegynder
17. april 2006 - 17:15 #35
Så er det jo mystisk.
Avatar billede vint Nybegynder
17. april 2006 - 17:55 #36
Ja, det er mystisk.

Også at jeg umiddelbart kan få det til at virke / connecte til MySQL og vist data fra DB i mit eget project, men at dit demoproject går i ged.

men endnu engang tak skal du have.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester