![]() |
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. |
Re: Zugriffsverletzung ..... warum?
Wenn du uns den Code zeigst vielleicht.
|
Re: Zugriffsverletzung ..... warum?
Hallo
Zitat:
Du könntest ja mal ein paar mehr Informationen posten. |
Re: Zugriffsverletzung ..... warum?
Zitat:
|
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 |
Re: Zugriffsverletzung ..... warum?
Code?
|
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. |
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. |
Re: Zugriffsverletzung ..... warum?
Du sagtest dass eine Tabelle draufgesetzt wird. Zeig dafür mal Code.
|
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. |
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? |
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 ![]() InnoDB: for installation help. InnoDB: Some operating system error numbers are described at InnoDB: ![]() 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. |
Re: Zugriffsverletzung ..... warum?
Wäre Euch super dankbar, wenn Ihr nochmal kurz drüber nachdenken könntet.
Danke. |
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 |
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. |
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 |
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. |
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??? |
Re: Zugriffsverletzung ..... warum?
Kann es sein, daß die Datenbanken verschiedene Versionen haben?
Thread 1: -> ![]() Thread 2: -> ![]() Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz