Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zugriffsverletzung ..... warum? (https://www.delphipraxis.net/84238-zugriffsverletzung-warum.html)

kluckweb 13. Jan 2007 18:56

Datenbank: MySQL • Version: 5 • Zugriff über: Intranet

Zugriffsverletzung ..... warum?
 
Hallo,

ich habe einen embedded MySQL Server in meinem Projekt eingebaut. Wenn ich nun eine Tabelle darauf setze, kriege ich immer eine Zugriffsverletzung der libmySQLd.dll .... wirklich verstehen tu ich das nicht.

Könnt Ihr mir helfen?

Danke.

mkinzler 13. Jan 2007 18:57

Re: Zugriffsverletzung ..... warum?
 
Wenn du uns den Code zeigst vielleicht.

BenjaminH 13. Jan 2007 18:57

Re: Zugriffsverletzung ..... warum?
 
Hallo
Zitat:

Zitat von kluckweb
wirklich verstehen tu ich das nicht.

Ich kann dich verstehen, ich versteh's auch nicht ;-)
Du könntest ja mal ein paar mehr Informationen posten.

Phoenix 13. Jan 2007 18:59

Re: Zugriffsverletzung ..... warum?
 
Zitat:

Zitat von kluckweb
Könnt Ihr mir helfen?

Sorry, aber meine Glaskugel ist gerade in Reparatur.

kluckweb 13. Jan 2007 19:03

Re: Zugriffsverletzung ..... warum?
 
Hallo,

OK ... Ihr habt ja Recht. Waren ein paar wenige Informationen.

Hier ein paar Detailinfos.

In den DriverProperties der MySQL DB Connection habe ich stehen:
basedir=./data
datadir=./data
character-sets-dir=./data/charsets
language=./data


In den Params steht:
[]
protocol=tcp
[embedded]
basedir=./data
datadir=./data
character-sets-dir=./data/charsets
language=./data


Mit diesen Daten habe ich schon in einem anderen Datenmodul eine embedded Connection laufen, ohne Probleme. Wenn ich das nun quasi nochmal genau so mache und dann ein Dataset auf die lokale DB setze, kommt halt die Zugriffsverletzung in der mySQLd.dll und das kann ich halt nicht nachvollziehen, weil es einmal läuft und beim zweiten mal nicht.

Hoffe, dass Ihr mir nun besser folgen konntet.

Danke für die Hilfe

Die Muhkuh 13. Jan 2007 19:08

Re: Zugriffsverletzung ..... warum?
 
Code?

kluckweb 13. Jan 2007 19:14

Re: Zugriffsverletzung ..... warum?
 
Der Fehler taucht auf, sobald die die DB Connection auf active := True setze.

Da gibt es noch gar keine Code, außer den Parametern und Angaben, die ich Euch schon genannt habe.

kluckweb 13. Jan 2007 20:51

Re: Zugriffsverletzung ..... warum?
 
Habe den Fehler nun mal soweit eingrenzen können.

Die Zugriffsverletzung kommt exakt bei dieser Zeile:

localdb2.open;

Nur bringt mich das nicht wirklich weiter, weil ich die DB ja aufmachen muss, da ich sie sonst nicht nutzen kann.
Weiß echt nicht mehr, was ich machen soll.

BenjaminH 13. Jan 2007 21:26

Re: Zugriffsverletzung ..... warum?
 
Du sagtest dass eine Tabelle draufgesetzt wird. Zeig dafür mal Code.

kluckweb 13. Jan 2007 21:29

Re: Zugriffsverletzung ..... warum?
 
Auch dafür gibt es leider keinen Code, da ich die Tabelle als Objekt im Datenmodul angelegt habe.

In einem anderen Datenmodul hat das exakt so auch funktioniert. DB Connection angelegt als embedded. Dann die DBs selbst als Datasets und schon konnte ich connecten. Nun geht es nicht.

Aber das ist der Grund, warum ich keinen Code habe. Es sind übrigens die Scibit MySQL Komponenten.

kluckweb 13. Jan 2007 21:33

Re: Zugriffsverletzung ..... warum?
 
Muss man noch irgendwas zusätzlich anlegen, damit das funktioniert?

Bei dem anderen Datenmodul (das habe ich seinerzeit nicht selbst programmiert gehabt) gibt es im Programmordner einen Unterordner "data" und dann einen weiteren Unterordner mit dem Namen der DB und dort ist ne MYD usw Datei drin mit dem Namen des Datasets, welches im Datenmodul angelegt war. Ich nehme mal an, dass dort dann die DB lokal liegt. Aber ich war eigentlich davon ausgegangen, dass die DB lokal automatisch angelegt wird, oder?

kluckweb 13. Jan 2007 23:56

Re: Zugriffsverletzung ..... warum?
 
Ich kriege in der Datei server.err folgende Fehlermeldung:

070114 0:21:05 InnoDB: Operating system error number 32 in a file operation.
InnoDB: See http://dev.mysql.com/doc/mysql/en/InnoDB.html
InnoDB: for installation help.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/mysql/en/Op...ror_codes.html
InnoDB: File name C:\Proggi\.\data\ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
070114 0:47:48 Can't find messagefile '\data\errmsg.sys'
070114 0:47:48 Aborting

070114 0:47:50 mysql_embedded: Shutdown Complete

070114 0:51:11 bdb: \data\log.0000000001: No such file or directory
070114 0:51:11 bdb: PANIC: No such file or directory



_________________________________________________

InnoDB: File name C:\Proggi\.\data\ibdata1 <== hier ist der Fehler glaube ich, weil das Verzeichnis \.\ noch dazwischen steht.

Aber wo ist denn bei meinen Einstellungen, die oben im Thread stehen nun der Fehler?

Nochmals Danke.

kluckweb 14. Jan 2007 10:42

Re: Zugriffsverletzung ..... warum?
 
Wäre Euch super dankbar, wenn Ihr nochmal kurz drüber nachdenken könntet.

Danke.

Klaus01 14. Jan 2007 11:17

Re: Zugriffsverletzung ..... warum?
 
Hallo,

hast Du das schon einmal ausprobiert?

basedir=data
datadir=data
character-sets-dir=data/charsets
language=data


In den Params steht:
[]
protocol=tcp
[embedded]
basedir=data
datadir=data
character-sets-dir=data/charsets
language=data

Grüße
Klaus

kluckweb 14. Jan 2007 11:32

Re: Zugriffsverletzung ..... warum?
 
Habe ich schon getestet.
Leider schmiert mir das Programm dann beim Befehl localdb.open total ab.

Und in der Server.err steht dann:

070114 1:00:58 mysql_embedded: Shutdown Complete

070114 12:31:14 Can't find messagefile 'data\share\data\errmsg.sys'
070114 12:31:14 Aborting

070114 12:31:16 mysql_embedded: Shutdown Complete

070114 12:31:24 Can't find messagefile 'data\share\data\errmsg.sys'
070114 12:31:24 Aborting

070114 12:31:25 mysql_embedded: Shutdown Complete


Was mich hier wunder ist, dass es nur ein Verzeichnis "data" und nie eins in Richtung "data\share\data" gegeben hat. Weiß echt nicht, wo der das herzieht.

Klaus01 14. Jan 2007 13:05

Re: Zugriffsverletzung ..... warum?
 
Was ist wenn Du für basedir eine vollständige Pfadangabe macht

basedir=c:\db

DataDir wäre dann ein Unterverzeichnis von baseDir
datadir=\data
character-sets-dir=\data/charsets
language=\data

Grüße
Klaus

kluckweb 14. Jan 2007 13:09

Re: Zugriffsverletzung ..... warum?
 
Hi,

der Punkt ist, dass meine genannte Variante ja bei einer anderen lokalen DB schon funktioniert im selben Projekt. Allerdings ein anderes Datenmodul. Und das habe ich nun quasi kopiert, aber es geht gar nicht. Und das kann ja eigentlich nicht sein.

2x derselbe Befehl müsste eigetnlich eine identische Reaktion zur Folge haben. Tut es hier leider nicht.

Mit absoluten Verzeichnissen kann ich leider nicht arbeiten, da im realen Einsatz auch unterschiedliche Programmverzeichnisse vorliegen.

kluckweb 14. Jan 2007 15:43

Re: Zugriffsverletzung ..... warum?
 
Hallo,

also ich habe nun noch das eine oder andere herausgefunden:

Die Zugriffsverletzung lag an der zweiten Serverkomponente, da man lokal wohl nur mit einer arbeiten kann, auch wenn die zweite abgeschaltet ist im Programm. Nungut ...

In den Optionen der DriverProperties der lokalen Server Komponente steht nun noch:

basedir=./data
datadir=./data
character-sets-dir=./data/charsets
language=./data


In den Params steht:
[]
protocol=tcp

[embedded]
basedir=./data
datadir=./data
character-sets-dir=./data/charsets
language=./data



Und wenn ich das Programm nun aufrufe und auf die erste lokale DB zugreife funktioniert es nach wie vor.
Greife ich auf die zweite DB zu kommt folgende Fehlermeldung:

[1033] Incorrect information in file 'C:\Proggi\.\data\\namever\beteiligte.frm

Hier wundert mich nun einerseits das angebliche Verzeichnis \.\ und dann auch noch die beiden \\ hinter data ....

Sagt jemandem von Euch das was???

Klaus01 14. Jan 2007 16:27

Re: Zugriffsverletzung ..... warum?
 
Kann es sein, daß die Datenbanken verschiedene Versionen haben?

Thread 1: -> http://groups.google.de/group/spline...5e79f8450c40ef
Thread 2: -> http://groups.google.de/group/mailin...4450b651363444

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz