Forum: Projekte & Code EleLa - Elektronik Lagerverwaltung V3.1


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Nun kann unter Gehäuse/Lager ein Dialog zur Auswahl vom Gehäuse geöffnet
> werden, siehe Screenshot.
Danke dir.

Markus M. schrieb:
> Grob die Antwort: QT5 als Widegetset verwenden (nicht GTK3).
Autsch.

Frank L. schrieb:
> eine QT5 Version bauen
Testen tun wir alles... Aber, ist denn GTK schon tot?

Den Compilerdurchlauf für die x86 könnte man sich sparen. Die 32-bit 
wäre länger tot, töter :)
Außer für RasPi, die fährt immer noch 32-bit.

: Bearbeitet durch User
von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Guten Abend Markus,
ich habe gerade versucht mit der aktuellen Version die Datenbank zu 
sichern:
23:40:56 E: SQL Error: constraint failed (mnDBExportClick|TfrmImportExport.btnExportClick|Tbl: tree_typ)/(  $000000010005E0F2)
Tritt das nur bei mir auf?
LG. JK

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
mratix@crodevo:~$ qtchooser -l
4
5
default
qt4-x86_64-linux-gnu
qt4
qt5-x86_64-linux-gnu
qt5
Besagt dass die Qt4+5 Unterstützung vorhanden ist. Qtconfig meldet 
zudem, aktiv die 4.8.7.
Und EAGLE z.B. läuft auch unter Qt. Also unter Qt4.
mratix@crodevo:~$ qtchooser --help
Usage:
  qtchooser { -l | -list-versions | -print-env }
  qtchooser -install [-f] [-local] <name> <path-to-qmake>
  qtchooser -run-tool=<tool name> [-qt=<Qt version>] [program arguments]
  <executable name> [-qt=<Qt version>] [program arguments]

Environment variables accepted:
 QTCHOOSER_RUNTOOL  name of the tool to be run (same as the -run-tool argument)
 QT_SELECT          version of Qt to be run (same as the -qt argument)
Mit dem qtchooser könnte man demnach eine Anwendung auch mit einer 
anderen Version starten.

Irgendwie stehe ich gerade auf dem Schlauch. Kennt sich jemand hiermit 
etwas aus?

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> ich habe gerade versucht mit der aktuellen Version die Datenbank zu
> sichern:
Warum nimmst du nicht einen Sqlite-Manager? Oder kopierst einfach die 
(geschlossene) Datenbankdatei.

von Markus M. (mmvisual)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Jaroslaw
Ich nutze ebenfalls diese Version, bei mir klappt der Backup. Ich 
vermute da muss ein fehlerhafter Eintrag in der Tabelle "tree_typ" sein.

Kannst Du einmal ein Backup ohne die Tabelle "tree_typ" ausführen?
Und dann einmal nur die "tree_typ"?

Ansonsten kann EleLa ab V3.1 die Datenbank bereinigen, siehe Screenshot. 
Damit werden ID-Verweise von gelöschten Datensätzen auf NULL korrigiert.

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
@ Mister A.
QT geht mit EleLa aktuell nicht, ich habe dafür bisher keine 
Dateien/Quellen mit eingebunden. EleLa kann nur GTK, so viel ich weis.

Und Jaroslaw nutzt kein SQLite, denn damit geht dieser Dialog nicht auf.

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> @ Mister A.
> QT geht mit EleLa aktuell nicht, ich habe dafür bisher keine
> Dateien/Quellen mit eingebunden. EleLa kann nur GTK, so viel ich weis.
Ahhh, OK. Dann passt ja alles.

> Und Jaroslaw nutzt kein SQLite, denn damit geht dieser Dialog nicht auf.
Stimmt, habe es spät erkannt.
Dann eben mit mysqldump oder grafisch mit phpMyAdmin.

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:
> Warum nimmst du nicht einen Sqlite-Manager? Oder kopierst einfach die
> (geschlossene) Datenbankdatei.

Ja, ich kann es auch direkt am Server sichern, aber ich denke dass 
Markus am Feedback interessiert ist.

LG. JK

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Ansonsten kann EleLa ab V3.1 die Datenbank bereinigen, siehe Screenshot.
> Damit werden ID-Verweise von gelöschten Datensätzen auf NULL korrigiert.

Ja, habe ich ausprobiert. EleLa meint, dass alles ok ist und es 
funktioniert auch außer dem Export alles soweit ich das in so kurzer 
Zeit bewerten kann.
Allerdings vermute ich, dass ich trotzdem ein mySQL Problem habe.
Der Export bricht jetzt jedes mal bei der Tabelle "foto" mit dieser 
Fehlermeldung ab:
00:18:40 E: Cannot retrieve Resultset data (mnDBExportClick|TfrmImportExport.btnExportClick|Tbl: foto)/(  $000000010005F142)

Allerdings scheitert auch mysqldump, und zwar immer in der gleichen 
Zeile:
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `foto` at row: 4128
Ich muss mir das morgen genauer ansehen...
Vielen Dank!
LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
In der INI von MySQL gibt es diverse Timeout-Parameter die man hoch 
setzen kann. Wenn das Problem dennoch bestehen bleibt und es die Daten 
sind und nicht ein Timeout, dann kann ich die Daten mir mal anschauen.
Jedoch der mysqldump sollte schon durchlaufen, das hat ja nichts mit 
EleLa zu tun. Der Dump ist ja dafür das alles relativ "nackt" zu 
sichern.

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Der Dump ist ja dafür das alles relativ "nackt" zu
> sichern.

Das ist mir klar.
Das Backup mit mysqldump ist zuletzt am 12.05.2020 beim letzten 
Versions-Wechsel noch einwandfrei gelaufen und ich habe seit damals am 
Server nichts geändert. AutoUpdates sind auch keine eingerichtet.
Dass alles trotzdem auf den mySQL Server hindeutet, ist mir klar.
Alles was ich bis jetzt im Internet zum "mysqldump: Error 2013" gefunden 
hat das Problem nicht behoben.
Der sqlcheck findet allerdings keine Fehler in der Tabelle, also liegt 
es anscheinend nur am mysqldump:
# mysqlcheck -c elela foto -u root -p
Enter password:
elela.foto                                         OK
#

LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
EleLa Version hat schon sehr lange die Datenbank nicht mehr geändert, 
die DB hat diese Version (Log von EleLa):
08:32:44 Database Version: V3.1.18B30
=> Datum 2018.11.30
Daher kann das vom neuen "Frontend" EleLa nicht kommen.
Erst ab EleLa V4 wird EleLa die Datenbankstruktur wieder anpassen.

Versuche einmal mit dem Tool "phpMyAdmin" oder "HeidiSQL" ein SQL Dump 
zu erzeugen, vielleicht sagen diese noch einen anderen Fehler.

Jaroslaw K. schrieb:
> und ich habe seit damals am Server nichts geändert.

Ich denke schon dass sich seither was geändert hat ... es gibt sicher 
viel mehr Daten in der Datenbank, das ist zwar das einzige, könnte 
jedoch Auswirkungen auf die Dauer der Sicherung haben -> Timeout Fehler.
Die Timeout Zeiten sind bei MySQL leider etwas "knapp" bemessen, siehe 
auch hier:
Beitrag "Re: EleLa - Elektronik Lagerverwaltung V3.1"

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Ich kann mir ehrlich gesagt nicht vorstellen dass ein fehlerhafter 
Datensatz das ganze derart zum Abriss bringt. MySQL hat eine ordentliche 
Konsistenz und kann mit derartigen Fällen gut umgehen.

Bei MariaDB bin ich mir mittlerweile nicht mehr so sicher. Das hat bei 
mir enormen Schaden an den Datenbanken produziert. MySQL 8.0 (obwohl 
relativ frisch) läuft wirklich sehr gut.

Jaroslaw, dein Server läuft nicht zufällig auf einem RasPi mit SDcard?
Oder in einer Sandbox wie Ampache (hieß die so?).
Oder ist es einfach nur eine instabile Wifi-Verbindung?

Jaroslaw K. schrieb:
> table `foto` at row: 4128
Lösch' doch mal den einen Datensatz und schau was dann passiert.

: Bearbeitet durch User
von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:

> Jaroslaw, dein Server läuft nicht zufällig auf einem RasPi mit SDcard?
Raspi 4 (4GB) mit SSD, aber wie gesagt, die Datenbank scheint ok zu 
sein.
Die Schwächen der SD-Karten sind mir bekannt.

> Oder in einer Sandbox wie Ampache (hieß die so?).
Nein, keine Sandbox, kein Docker.

> Oder ist es einfach nur eine instabile Wifi-Verbindung?
Nein. Gigabit-Kabel (auch wenn er es nicht ganz schafft).
Wifi und BT habe ich durch Einträge in "raspi-blacklist.conf" 
deaktiviert, weil ich es nicht brauche. Die Wifi- und BT-Hardware lässt 
sich leider ohne Lötstation nicht deaktivieren.
Allerdings entfällt die Netzwerkverbindung, wenn ich mysqldump direkt am 
Server starte und nur auf lokalen Dateisystemen schreibe bzw. von denen 
lese. Wenn er in diesem Fall Netzwerk statt Socket nimmt, dann ist 
ohnehin keine echte Netzwerkschnittstelle in Verwendung.

> Lösch' doch mal den einen Datensatz und schau was dann passiert.
Darüber habe ich schon nachgedacht, allerdings sagt er, dass er beim Row 
4128 aussteigt, aber er sagt sonst nichts. Hilfreicher wäre zb. der 
primäre Schlüssel. Das muss ich mir zuerst noch genauer ansehen um den 
Satz eindeutig zu identifizieren.

LG. JK

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:
> Lösch' doch mal den einen Datensatz und schau was dann passiert.

Das ganze ist sehr eigenartig.
Ich habe jetzt die Sätze aus der Tabelle "foto" ermittelt, die seit dem 
letzten Backup dazu gekommen sind (25 Fotos). Alle diese Fotos kann 
EleLa ganz normal anzeigen.

LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Kannst Du mit der Backup-Funktion nur die Tabelle "Foto" sichern?

Kannst Du EleLa für den RaspberryPi auf dem Raspi starten und damit ein 
Backup durchführen?

Ich habe eine Synology Discstation, da läuft MariaDB 10.3 drauf, diese 
habe ich schon 7 Jahre 24/7 am laufen, ohne Probleme. Davor hatte ich 
mir einen Server selbst zusammen gestellt -> nach 2 Jahre HW-Probleme 
(obwohl ich dachte alle Komponenten sind in guter Qualität).
Es ist jetzt keine Werbung, nur ein Erfahrungsbericht.
Mit auf der DS läuft ein SVN Server für Quellcodeverwaltung.
Die von Mister gezeigten Probleme mit der MariaDB Datenbank kann ich 
nicht bestätigen, da meine schon eine gefühlte Ewigkeit funktioniert.
Meine DS hat Server-Festplatten drin, die doppelt so teuer waren als die 
Desktop-Platten, und noch kein einziger Ausfall. Das Teil hat eine ganze 
Stange Geld gekostet ... nach so vielen Jahren und so wenigen Problemen 
(einfache Administration) kann ich dies jedem empfehlen. Vor allem als 
Firma, wenn man da 20..30 Stunden arbeitszeit spart, dann ist die DS 
schon billiger als alles was man selbst zusammenstellt.

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> Das muss ich mir zuerst noch genauer ansehen um den
> Satz eindeutig zu identifizieren.
Ja ist schon doof, die Zeilennummer statt ID auszugeben

Die einzelne numerische Zeile 4128 wäre:
SELECT * FROM `foto` LIMIT 4128, 1;
zum löschen DELETE statt SELECT.

Nachtrag: oups, war zu langsam

: Bearbeitet durch User
von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> Allerdings entfällt die Netzwerkverbindung, wenn ich mysqldump direkt am
> Server starte und nur auf lokalen Dateisystemen schreibe bzw. von denen
> lese. Wenn er in diesem Fall Netzwerk statt Socket nimmt, dann ist
> ohnehin keine echte Netzwerkschnittstelle in Verwendung.
Bitte was?
Entweder Socket oder TCP. Egal ob lokal oder per LAN. Socket sollte man 
bevorzugen.

Markus M. schrieb:
> Kannst Du EleLa für den RaspberryPi auf dem Raspi starten und damit ein
> Backup durchführen?
Zu aufwendig.

Gehe einfach per ssh auf den Raspi und starte den mysqldump. Fertig.

Oder von deiner Arbeitsmaschine aus (mit -h ipadresse) aus, dann 
bekommst du es lokal.

: Bearbeitet durch User
von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:

> Bitte was?
Ich meine das so:
- mysql server läuft am Raspi.
- mysqldump läuft am Raspi.
- Wo ist da eine Netzwerk-Verbindung dazwischen? (weil Du ja wg. WiFi 
gefragt hast).

> Markus M. schrieb:
>> Kannst Du EleLa für den RaspberryPi auf dem Raspi starten und damit ein
>> Backup durchführen?
> Zu aufwendig.
Muss ich mal checken.

> Gehe einfach per ssh auf den Raspi und starte den mysqldump. Fertig.
Was glaubst Du, was ich die ganze Zeit mache? :-)
Und genau das macht Probleme.

LG. JK

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> Ich meine das so:
> - mysql server läuft am Raspi.
> - mysqldump läuft am Raspi.
> - Wo ist da eine Netzwerk-Verbindung dazwischen? (weil Du ja wg. WiFi
> gefragt hast).
Kenne deine Konfiguration nicht. Daher alles in Betracht gezogen.
Was ich noch nicht weis
- ob die Arbeitsmaschine Linux oder Windows ist?
- welchen MySQL Version läuft auf dem Server (RasPi)?

>> Gehe einfach per ssh auf den Raspi und starte den mysqldump. Fertig.
> Was glaubst Du, was ich die ganze Zeit mache? :-)
> Und genau das macht Probleme.
Zum Verständnis: Der lokale mysqldump, am raspi mit mysql server, hat 
schon lokal das Problem, von sich - auf sich, den dump zu erstellen?
Krass!

Zeig mal bitte deine
~/my.cnf
/etc/mysql/my.cnf + mysql.conf bzw. mariadb.cnf
ggf. sind die verlinkt oder included, liegen dann ein Verzeichnis 
drunter.

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Kannst Du mit der Backup-Funktion nur die Tabelle "Foto" sichern?
geht auch nicht. Er bricht in genau der gleichen Zeile ab.
Etwas eigenartig ist die Meldung "Lost connection to MySQL server". Der 
Server ist danach aber weiterhin verfügbar (autom. Restarts habe ich 
nicht eingerichtet. Wenn er stirbt, dann bleibt er auch inaktiv). Für 
mich deutet das schon auf irgendein Timing-Problem hin...
Mich überrascht es nur, dass es bei einer 200MB Datenbank auftritt...

> Kannst Du EleLa für den RaspberryPi auf dem Raspi starten und damit ein
> Backup durchführen?
Das werde ich mir noch ansehen.

> Ich habe eine Synology Discstation, da läuft MariaDB 10.3 drauf, diese
Das, was hier bei mir als DB-Server läuft ist "MariaDB 10.3.22".

> (einfache Administration) kann ich dies jedem empfehlen. Vor allem als
> Firma, wenn man da 20..30 Stunden Arbeitszeit spart, dann ist die DS
> schon billiger als alles was man selbst zusammenstellt.
Ich brauche das nur privat für mein Hobby.
Aber ich kann Deine Gedankengänge nachvollziehen. Beruflich habe ich 
viel mit DB2 und SQL Server zu tun. Dort würde ich sicher keine 
Datenbank am Raspi platzieren, aber privat in der Wohnung überwiegen 
andere Argumente.
Ich will bei einem 24/7 System in der Wohnung keine Lüfter hören.
Das ist auch der Grund, warum bei mir der Raspi immer läuft und ein HP 
ProLiant mit Tonnenweise SAS-Platten und LTO Tape-Library eine Ebene 
tiefer im gleichen Rack nur bei Bedarf eingeschaltet wird.

LG. JK

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> Etwas eigenartig ist die Meldung "Lost connection to MySQL server". Der
> Server ist danach aber weiterhin verfügbar
Oh ooooh, ich ahne böses. u.U. laufen mehrere Server, die sich auf die 
Füße treten.
sudo systemctl stop mysql
sudo systemctl stop mysqld
sudo systemctl stop mariadb
sudo systemctl start mysql
und jetzt mach mal den mysqldump...

wenn das nicht hilft
- Bitte einen Auszug oder screenshot von der 'top'
- Welche Version ist (dir bekannt) im Einsatz, welche Version sagt 
'mysql --version'

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:

>> Etwas eigenartig ist die Meldung "Lost connection to MySQL server". Der
>> Server ist danach aber weiterhin verfügbar
> Oh ooooh, ich ahne böses. u.U. laufen mehrere Server, die sich auf die
> Füße treten.
> sudo systemctl stop mysql
> sudo systemctl stop mysqld
> sudo systemctl stop mariadb
> sudo systemctl start mysql
Nein. Ich habe genau EINE installation und das ist:
mysql  Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnueabihf (armv8l) using readline 5.2

> wenn das nicht hilft
> - Bitte einen Auszug oder screenshot von der 'top'
Es gibt keine weiteren Datenbank-Prozesse ausser einem einzigen 
"/usr/sbin/mysqld". Und dieser gehört zu MariaDB:
# ps -ef|grep -i maria|grep -v grep
# ps -ef|grep -i mysql|grep -v grep
mysql      361     1  0 17:09 ?        00:00:02 /usr/sbin/mysqld
# dpkg -S /usr/sbin/mysqld
mariadb-server-core-10.3: /usr/sbin/mysqld
#

> - Welche Version ist (dir bekannt) im Einsatz, welche Version sagt
> 'mysql --version'
Siehe oben.
Ich installiere nicht einfach alles, sondern nur das, was ich brauche.

LG. JK

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Sieht alles gut aus. Kein Problem, muss funktionieren :)
cat /etc/mysql/conf.d/mysqldump.cnf 
[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

: Bearbeitet durch User
von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:
> Sieht alles gut aus. Kein Problem, muss funktionieren :)

Das bestätigt meine Diagnose. :-)
Und trotzdem geht es nicht.
Allerdings habe ich in den Log's Meldungen gefunden, die doch auf eine 
Daten-Corruption hindeuten.
Eigenartig ist nur dass der "Table Check" am Server (CHECK TABLE 
`elela`.`foto` EXTENDED;) keine Probleme finden kann, beim Checksum 
jedoch der gleiche Fehler kommt, wie beim mysqldump:
CHECKSUM TABLE `elela`.`foto`;
/* SQL Fehler (2013): Lost connection to MySQL server during query */
/* Verbindung zum Server beendet um 2020-05-19 17:41:55 */
Ich denke, es wird mir nichts anderes über bleiben, als das Backup vom 
12.05. zu restoren und von dort die Tabelle "foto" zu übernehmen.

LG. JK

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:
> [mysqldump]
> quick
> quote-names
> max_allowed_packet  = 16M

Das schaut bei mir identisch aus.

LG. JK

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Merkwürdig, dass es nur die Bilder betrifft.
Anfangs dachte ich sie seien einfach nur korrupt. Header bzw tail. Dann 
kam ja die Rückmeldung, sie können geöffnet werden.

Was wenn es welche mit Pixel-Tracking oder Corona included sind? :)

Wollen wir dann Markus schimpfen, warum er Bilder in die Datenbank 
hineinbläst :)

Nachtrag: Die Idee ist gar nicht mal so weit hergeholt.
Vor ein paar Tagen hattest du doch SSL implementiert?
Wenn ein Tracking-Pixel die falsche Seite ansteuert... was dann? Wo 
schlägt die Meldung auf? MySQL hat nirgends ein Backend um es 
darzustellen.

: Bearbeitet durch User
von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Ja, EleLa speichert Bilder in der Datenbank, jedoch maximal bis zu 64 KB 
je Bild, ist es größer wird das Bild verkleinert bis es passt, bzw. 
automatisch konvertiert in JPG oder PNG je nach dem welches Format 
kleiner wird.
Diese Bilder in der DB zu halten macht durchaus Sinn, denn wenn die wo 
anders liegen, dann bräuchte EleLa nicht nur eine Datenbank-Verbindung 
zum Server sondern auch noch eine Dateifreigabe zu den Bildern, was den 
administrativen Aufwand deutlich erhöht.
Ich bin sogar am überlegen ob es nicht auch Sinn macht die Handbücher 
(PDF's) mit in der Datenbank ab zu legen, so ein STM32-Reference-Manual 
hat gleich mal 20MB.

Ich kenne einen EleLa-User dem seine DB ist ca. 800MB groß - und hat 
damit keine Probleme.

@Jaroslaw:
Bitte lösche die Datenbank noch nicht, denn das bringt gar nichts. 
Innerhalb weniger Tage hat man wieder diese Bilder drin und dann geht es 
wieder nicht.

Ich versuche bei den Bildern eine spezielle Backup-Routine in EleLa zu 
schreiben, die die Bilder dann einzeln von der Datenbank liest, damit 
sollte das Timeout-Problem weg sein. Das mysqldump geht dann zwar immer 
noch nicht, aber darauf habe ich ja keinen Einfluss.

Das "SSL" braucht es nur damit man HTTPS Internetseiten laden kann. Das 
wird für die neue API von Mouser benötigt. Ansonsten braucht EleLa kein 
SSL (auch nicht für die Datenbank).

(Bin Tagsüber viel draußen im Garten, nicht so viel am PC...)

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Mister A. schrieb:

> Merkwürdig, dass es nur die Bilder betrifft.
Sehe ich auch so.

> Anfangs dachte ich sie seien einfach nur korrupt. Header bzw tail. Dann
> kam ja die Rückmeldung, sie können geöffnet werden.
Ja, das kann ich mir nicht erklären.
Vor allem warum sagt er bei der Prüfung dass alles ok ist?
Vielleicht haben die mariaDB Entwickler die Prüfung nicht ernst 
genommen. Andererseits müsste ich nachlesen, was da genau geprüft wird.

> Nachtrag: Die Idee ist gar nicht mal so weit hergeholt.
> Vor ein paar Tagen hattest du doch SSL implementiert?
Nein. Vor einigen Tagen hatte ich mit SSL Probleme obwohl ich nichts 
verändert habe (so ähnlich wie jetzt). Und zuvor ist es ~2 Jahre lang 
ohne Probleme mit SSL gelaufen.
Ich sage ja nicht, dass ich den Raspi gar nicht verändere da diverse 
Updates und Fixes einfach manchmal installiert werden sollten.
Es ist nur damals wie jetzt genau dann etwas passiert, wenn ich gar 
keine Updates, bzw. Änderungen vorgenommen habe.

Inzwischen habe ich die Sicherung vom 12.05. als neue Datenbank 
wiederhergestellt, die betroffene Tabelle in der aktuellen Datenbank 
gelöscht und durch die Version vom 12.05. aus der wiederhergestellten 
Datenbank ersetzt.
Ich habe zwar um die 25 Bilder weniger, aber das ist jetzt nicht so 
wichtig. Da ja EleLa auf diese Bilder ohne Probleme zugreifen konnte, 
lag der Fehler vermutlich an einer anderen Stelle der Tabelle. D.h. ich 
könnte die Bilder auch noch retten.

Jetzt funktioniert sowohl das Backup über EleLa als auch mysqldump 
wieder.
Ich danke Euch für die Tipps!

LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Wegen:
> beim Checksum jedoch der gleiche Fehler kommt, wie beim mysqldump
Ist ja klar, denn bei beiden wird ein SELECT * FROM 'foto' ausgeführt, 
und da der Server zu lahm ist um alles in das RAM zu laden, bzw. der RAM 
beim RasPi einfach zu klein ist, deshalb stürzt das einfach ab.
Wenn ich jedoch die Bilder-Daten einzeln abfrage reicht der Speicher 
aus, bzw. braucht nicht so viel Zeit.
Wenn unter Linux der Speicher aus geht passieren die kuriosesten Dinge, 
bis hin zum "Ich kann das OS nicht mehr starten".

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> Ich habe zwar um die 25 Bilder weniger, aber das ist jetzt nicht so
> wichtig.

Nun bitte wieder das ausfühen:
Beitrag "Re: EleLa - Elektronik Lagerverwaltung V3.1"
Denn in der Datenbank gibt es noch jede Menge Verknüpfungen zu den 
fehlenden 25 Bildern. Wenn man das nicht macht und man neue Bilder hinzu 
fügt, dann tauchen diese plötzlich bei anderer Stelle mit auf und wenn 
man dann diese dort löscht, dann ist das Bild bei einem anderen 
Datensatz dann auch wieder weg.

Doch es ist wichtig ;-)

: Bearbeitet durch User
von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> Jetzt funktioniert sowohl das Backup über EleLa als auch mysqldump
> wieder.
> Ich danke Euch für die Tipps!

Bin mal gespannt ob es auch noch funktioniert wenn diese 25 Bilder 
wieder neu in der Datenbank drin sind ...

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:

> Diese Bilder in der DB zu halten macht durchaus Sinn, denn wenn die wo
> anders liegen, dann bräuchte EleLa nicht nur eine Datenbank-Verbindung
> zum Server sondern auch noch eine Dateifreigabe zu den Bildern, was den
> administrativen Aufwand deutlich erhöht.
das hängt davon ab, was als Datenbank genutzt wird.
Im Fall des SQL Servers, den Du ja auch unterstützt, gibt es mit den 
FILESTREAMS eine sehr elegante Möglichkeit. Der SQL-Server stellt Dir 
selbst ein entsprechendes Share zur Verfügung und bei den Zugriffen 
einen Dateinamen auf welchen Du aus dem Programm heraus zugreifen 
kannst. Allerdings wenn Du auf Progress-Anzeigen beim Transfer großer 
Dateien verzichtest, dann musst Du nicht mal diese Informationen haben.
Dort hat das den Vorteil, dass die Dateien dann zwar nicht in der 
Datenbank sondern in einem FILESTREAM Folder liegen, aber der SQL Server 
kümmert sich selbst auch um diesen Folder im Falle eines Backups bzw. 
Restore wodurch die Konsistenz dieses Folders und der Datenbank 
sichergestellt ist.
Ich könnte Dir dazu Beispielcode liefern, allerdings nur in C#.

Zum Thema ob es besser ist BLOBs in der Datenbank oder außerhalb der 
Datenbank zu speichern kann ich auf folgende Seite verweisen:
[[https://www.microsoft.com/en-us/research/publication/to-blob-or-not-to-blob-large-object-storage-in-a-database-or-a-filesystem/]]
Damit musste ich mich auch schon mal während der Entwicklung einer 
Applikation befassen.

> Ich bin sogar am überlegen ob es nicht auch Sinn macht die Handbücher
> (PDF's) mit in der Datenbank ab zu legen, so ein STM32-Reference-Manual
> hat gleich mal 20MB.
Da ich in einigen Fällen mehrere Dokumente pro Eintrag brauche, trage 
ich in diesen Fällen nur den Link zu einem Folder ein, der die Dokumente 
enthält. Das wäre dann nicht mehr möglich.

> Ich kenne einen EleLa-User dem seine DB ist ca. 800MB groß - und hat
> damit keine Probleme.
800MB ist auch nicht groß.
Ich habe es normalerweise mit Datenbanken im TB-Berech zu tun und auch 
das ist im Normalfall kein Problem (am Raspi eventuell doch :-)).

> @Jaroslaw:
> Bitte lösche die Datenbank noch nicht, denn das bringt gar nichts.
> Innerhalb weniger Tage hat man wieder diese Bilder drin und dann geht es
> wieder nicht.
Ich habe sie ja nicht sichern können, also habe ich sie nur als 
File-Backup des mysql-Data-Folders abgelegt.

> Ich versuche bei den Bildern eine spezielle Backup-Routine in EleLa zu
> schreiben, die die Bilder dann einzeln von der Datenbank liest, damit
> sollte das Timeout-Problem weg sein. Das mysqldump geht dann zwar immer
> noch nicht, aber darauf habe ich ja keinen Einfluss.

Ich bin mir nicht sicher, ob das notwendig ist. Es war anscheinend 
wirklich ein Datenfehler da. Ich weiß zwar nicht woher, aber er war 
anscheinend da.

LG. JK

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Doch es ist wichtig ;-)

Ja, Du hast Recht.
Ich habe mich falsch ausgedrückt.
Mir war es nicht so wichtig, dem EleLa schon. :-)
Er hat die Referenzen auf die fehlenden Bilder entfernt.

LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Zitat:
objects smaller than 256K are best stored in a database

Na, dann habe ich es mit den Bildern ja richtig gemacht (64KB) ;-)

Abgesehen davon, wenn man ein Backp offline auf einem Laptop mitnimmt 
und unterwegs arbeiten möchte sind die Bilder mit in der SQLite Datei, 
was ein Mitnehmen der Daten in den Urlaub erleichtert.


Jaroslaw K. schrieb:
> Ich bin mir nicht sicher, ob das notwendig ist. Es war anscheinend
> wirklich ein Datenfehler da. Ich weiß zwar nicht woher, aber er war
> anscheinend da.

Wenn das wieder zum Problem werden sollte, dann ändere ich den 
EleLa-Backup, so dass Bilder einzeln vom Server abgefragt werden.

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:

> Na, dann habe ich es mit den Bildern ja richtig gemacht (64KB) ;-)
So sehe ich das auch. :-)

> Abgesehen davon, wenn man ein Backp offline auf einem Laptop mitnimmt
> und unterwegs arbeiten möchte sind die Bilder mit in der SQLite Datei,
> was ein Mitnehmen der Daten in den Urlaub erleichtert.
Das stimmt.

> Wenn das wieder zum Problem werden sollte, dann ändere ich den
> EleLa-Backup, so dass Bilder einzeln vom Server abgefragt werden.
Alles klar.

LG. JK

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> da der Server zu lahm ist um alles in das RAM zu laden, bzw. der RAM
> beim RasPi einfach zu klein ist, deshalb stürzt das einfach ab.
Das sehe ich auch so.

> Wenn ich jedoch die Bilder-Daten einzeln abfrage reicht der Speicher
> aus, bzw. braucht nicht so viel Zeit.
Genau.

> Wenn unter Linux der Speicher aus geht passieren die kuriosesten Dinge
Beobachtet habe so einige Server die letzten Jahre, da liefen zahlreiche 
Dienste und schaffen es selten die 1GB Grenze zu durchbrechen.
Anders ist es bei Applikation, die gönnen sich gerne einen Polster.
Extrem sind die Browser, die hauen sofort ordentlich rein, besorgen sich 
childs so viel wie nur geht.

> bis hin zum "Ich kann das OS nicht mehr starten".
Das ist ein Mythos.
Der Speicher (RAM) geht nie aus. Dafür sorgt das Eco-System und die 
Anständigkeit der Entwickler. Alles andere fängt die swap ab. Und die 
kann man nicht mit so einer Windows pagefile vergleichen.

Auch beim Diskspeicher (Storage) gibt es seit Jahrzenten eingebaute 
Schutzmaßnahmen.
Ich gebe einer root-Partition dennoch nur ein "mkfs -m 0.1%" auf 
8..15GB. Dabei ist noch nie was übergelaufen.

Mister A. schrieb:
> Wollen wir dann Markus schimpfen, warum er Bilder in die Datenbank
> hineinbläst :)
Das war natürlich nur ein Scherz. In Problemsituationen muss man 
irgendwoher ein Lächeln herzaubern.
Es spricht absolut nichts dagegen, Bilder in die Datenbank abzulegen. 
Und bei dieser Mini Größenordnung erst recht nicht.
Alle anderen Anlagen sollten aber auf eine /data ausgelagert werden.
Natürlich kommt dann der Punkt Dokumentenmanagement.

Markus M. schrieb:
> Ich kenne einen EleLa-User dem seine DB ist ca. 800MB groß - und hat
> damit keine Probleme.
Ist auch keine Größe für eine Datenbank.

Jaroslaw K. schrieb:
> Ich habe sie ja nicht sichern können, also habe ich sie nur als
> File-Backup des mysql-Data-Folders abgelegt.
Schade, ich hätte sie testweise an ein anderes System gehängt. Dank 
Linux ist das kein Problem. Bei Raspi entsprechend an eine andere ARM 
Architektur.

Jaroslaw K. schrieb:
> (armv8l) using readline 5.2
   ^^^^^^ Hoppala, du fährst die 64-bit Armbian? Weist schon dass die 
noch ganz frisch ist und erst seit Raspi4 das coming-out hat? Auch wenn 
die SoC seit Jahren schon 64-bit ist.
Das könnte ein Punkt werden. Behalte das mal im Auge.

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Jaroslaw K. schrieb:
> mysql  Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnueabihf
> (armv8l) using readline 5.2
Kommando zurück, da war ich zu schnell :)

von Mister A. (mratix)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wie macht ihr es, bei Positionen im Projekt, die entweder
- optional (als Bestückungsvariante)
- oder alternativ (Ersatz)
vorkommen?

Anbei ein Beispiel der Zusammenstellung.

Gibt es andere Möglichkeiten, Vorgänge oder kann man es so anwenden?
Ich weis nicht was nachher noch kommt und folgt (Historie, Versionen, 
Revisionen, Änderungen usw.).

von Markus M. (mmvisual)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Mister A. schrieb:
> - optional (als Bestückungsvariante)

Dafür ist das Feld "Bestückungsvariante", damit kann man diese Bauteile 
mit Ein-/Ausblenden.

> - oder alternativ (Ersatz)
Als Alternative (Ersatz weil ein anderes z.B. abgekündigt wurde) kann 
man derzeit nur das neue Bauteil aus der Bauteil/Lager/Gehäuse Liste 
auswählen, das man zuor angelegt hatte. Alles andere macht keinen Sinn.

Ab EleLa V4 kann man bei Bauteile/Variante die Ersatz-Typen direkt 
zusammen fassen und EleLa zeigt einem beim Projekt die Lagerbestände des 
gewählten Bauteils sowie der Ersatz-Typen.
Dies macht vor allem bei den sogenannten "Hünerfutter" Teilen Sinn, da 
die Hersteller diese regelmäßig abkündigen und man schon wieder einen 
neuen (gleichen) Typ heraussuchen muss. Damit muss man dann nicht mehr 
die Positionen im Projekt anpassen.
Anbei ein Screenshot, damit man es sich vielleicht besser vorstellen 
kann...
Bild1: Bauteilansicht
Bild2: Projektansicht mit Auswahl der verknüpften Bauteile
Aktuell ist diese EXE noch nicht veröffentlicht.

von Mister A. (mratix)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Ab EleLa V4 kann man bei Bauteile/Variante die Ersatz-Typen direkt
> zusammen fassen
Wow, das sieht ja richtig gut aus. Genau die fehlende Brücke freu.

Bei Alternativpositionen sah ich bisher primär nur pingleiche Bauteile 
bzw. was das Lager gerade hergibt.

Nach langem Gröbeln hab ich hier etwas an der Ablagestruktur/Schema 
verändert. Um eben möglichst eine ähnliche Gruppierfunktion zu 
erreichen.
Bauteil wurde zu Meta-Bauteil. Lager/Gehäuse zu Bauteil. Library zu 
Pinout.

- Die Meta-Bauteile (1. Ebene) sind eigentlich nur eine Gruppierung 
einer Bauteil-Serie und/oder eines Typen (Kategorie).
- Die Bauteile (2. Ebene) stellen die einzelnen Bauteile dar. Egal 
welches Gehäuse/Bauform.
- Der/das Pinout hilft einen kompatiblen Ersatz zu bestimmen.
- Und die TecData runden das ganze auf und gehen ins Detail.
Damit kann man relativ gut arbeiten (Screenshots).

Etwas fällt mir noch stark ins Auge. Da die Bildschirme immer weiter in 
die Breite gehen, bleibt der Quadrant rechts relativ leer. Gut, im Lab 
benutze ich auch einen alten 4:3 der hauptsächlich nur als Infoterminal 
dient.
- Die Bildervorschau z.B. braucht man nicht unbedingt permanent. Die 
könnte man ruhig auf ein drittel schrumpfen, bekäme so kleine 2x3 3x3 
4x3 Thumbnails. Wenn man sie braucht, anklicken.
- Den Projektkopf vielleicht auch (sobald die Positionsliste unten 
Einträge hat) weiter schrumpfen. So auf eine Zeile, komplett einfahren, 
nach rechts quetschen oder irgendwas anders. Eigentlich braucht man hier 
nur einen Indikator mit Version, ob man im richtigen Projekt ist.

Nchtrag: Die Übersetzungstexte werden nicht immer geladen. Im letzten 
Bild (Widerstände) sieht man den Standard. Händisch einlesen geht 
natürlich.

: Bearbeitet durch User
von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Ein paar Tipps ...

Eigentlich hat EleLa sogar 3 Ebenen, vor der Ebene 1 gibt es noch die 
0te Ebene, die man als "Grobstrukturierung" bei "Typ-F8" einstellt. 
Damit kann man sehr einfach z.B. alle Supressordioden gut 
zusammenfassen.

das "Meta-Bauteile" (Ebene 1) würde ich etwas feiner strukturieren, also 
z.B. Bezeichnung:
"C 100nF"
Dann unter Gehäuse/Lager kommen alle Gehäuse und Typ-Variationen von den 
100nF rein, die man so hat.
Damit hat man einen Überblick welche 100nF man so alles hat (z.B. für 
Ersatzteil oder Neudesign).
Bei Deiner Meta-Strukturierung müsste man erst in "C-Elko", dann 
"C-Kerko" und noch "C-Tantal" und darin jeweils 100nF suchen, um zu 
wissen was man hat.
Bei Widerständen habe ich bei mir es so eingerichtet:
Bauteil: "R 10,0 KOhm"
Gehäuse/Lager: alle THT und SMD Typen (ich habe 5 verschiedene, auch der 
in CAY16 Gehäuse ist da mit dabei)
Überlege es Dir noch das zu ändern, denn bei Kondensatoren & Widerstände 
wird es viele 100 Sorten mal geben und dann wird die Gehäuse/Lager 
Tabelle bald unübersichtlich.

Vorgehensweise wenn ich irgend einen Widerstand finden will, der das 
Gehäuse "CAY16" hat:
Ich suche unter "Typ-F8", wähle links im Baum "Widerstand" aus, rechts 
in der Checkbox-Liste die Gehäuse "CAY16" und "TC164".
Die Tabelle zeigt dann alle Bauteile und Gehäuse/Lager Variationen an, 
ich muss nicht bei "Bauteile-F2" die einzelne Widerstände durchsuchen.

Ähnlich auch bei Suche eines N-Mosfets in einem bestimmten Gehäuse, das 
findet sich am besten bei "Typ-F8".

Zu TecData:
EleLa kann mit "Suchen-F5" in den Datenfeldern von TecData suchen, wenn 
man sich bei Zahleneingabe an Zahlen hält kann EleLa auch ein ">=" oder 
"<=" suche starten.
Beispiel: Man sucht einen Transistor mit PTot >= 100 Watt
Bei der Eingabe "Voltage forward Vf [V]" mit der Eingabe "0.5-0.8" ist 
das dann keine Zahl mehr und die Suche schlägt somit fehl.
Man müsste das in 2 TecData Felder schreiben "Voltage forward min Vf 
[V]" und "Voltage forward max Vf [V]".

Bei Projekt, rechts neben "Menge Offen" gibt es einen Pfeil mit der man 
den unteren Teil "einklappen" kann und man sieht nur noch das 
Wichtigste. "Bezeichnung", "Handbuch" -> damit man da ein Link ins 
Projektverzeichnis setzen kann, "Termin" / "Mengen" -> wichtig für 
Herstellung und das "Bemerkung"-Feld

Wegen Übersetzungstexte: Ist das der gleiche Rechner? Wenn man die 
übersetzten Texte in die Datenbank in die Translate Tabelle rein nimmt, 
ist das dann auch so?

: Bearbeitet durch User
von Mister A. (mratix)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> 0te Ebene, die man als "Grobstrukturierung" bei "Typ-F8" einstellt
Stimmt, die habe ich eingepflegt und dann raffiniert übergangen und 
ausgeklammert.

Markus M. schrieb:
> Bei Deiner Meta-Strukturierung müsste man erst in "C-Elko", dann
> "C-Kerko" und noch "C-Tantal" und darin jeweils 100nF suchen, um zu
> wissen was man hat.
Ja, geht aber immer noch schneller bzw. übersichtlicher als 100 
Einzeltypen zu haben. Jetzt habe genau einen R Widerstand und 3 C 
Kondensatoren im Hauptfenster. Zum Schluß werden es höchstend 5+5. Und 
es gibt ja auch noch Transistoren, MOSFETS... Da muss es pro Typ bei der 
groben Gruppe bleiben.

Markus M. schrieb:
> Überlege es Dir noch das zu ändern, denn bei Kondensatoren & Widerstände
> wird es viele 100 Sorten mal geben und dann wird die Gehäuse/Lager
> Tabelle bald unübersichtlich.
Derzeit sind verhältnismäßig wenige Bauteile (nur die welche im Projekt 
benötigt werden) angelegt.
Du hast völlig Recht. Ein Problem erschlagen, zweites geschaffen bzw. im 
Zulauf.

Ich bewege mich primär im ersten/zweiten Bauteile-Fenster, dort war es 
mir wichtig nicht von Einzel-Bauteilen überflutet zu werden. Es war auch 
mehr eine Folgeaktion auf das Scrolling. Danach wurde sehr viel gekürzt 
und umstrukturiert.
Die anderen Suchmöglicheiten muss ich noch praktisch entdecken.

Markus M. schrieb:
> Bei der Eingabe "Voltage forward Vf [V]" mit der Eingabe "0.5-0.8" ist
> das dann keine Zahl mehr und die Suche schlägt somit fehl.
Oups, schuldig. Wurde im Gefecht übersehen.

Markus M. schrieb:
> Wegen Übersetzungstexte:
Das war ein kleiner Hoppala, in der ini war der Wert von "LanguageFile=" 
rausgeflogen. Nicht weiter schlimm. Evtl. ist in den Settings (nach 
einem Besuch dort) irgendwo noch eine Kleinigkeit unsauber, dass es als 
Null zurückgeschrieben wurde. Otto Normalo dürfte es kaum auffallen.

Markus M. schrieb:
> Ist das der gleiche Rechner? Wenn man die
> übersetzten Texte in die Datenbank in die Translate Tabelle rein nimmt,
> ist das dann auch so?
Ist auf dem Dev/Spiele/Scripting-Rechner mit der lokalen sqlite. Dort 
darf alles passieren und zerbrechen.
Mit dem großen Language-Editor komme ich irgendwie gar nicht klar. Die 
vielen Knöpfe, Tasten, Spalten verlangen ein extra Wochenendkurs :)
Und dann noch das Verständnisproblem, kommen die Texte aus der Datei 
(ini Pfad), der neuen *.po, der Datenbank oder aus dem System ROM.
Jedenfalls liest ein Neustart/Öffnen eine andere Quelle ein, als mir 
lieb ist :)
Beim Client (Arbeitsplatzrechner) mit MySQL hab ich nicht geschaut. Auf 
dem läuft auch nur die Stable, keine Nightlies.

---hidden---
Ich bereite mich langsam auf die große Import-Aktion vor. Ziel ist es 
natürlich so viel wie möglich aus PartDB rüber zu holen. Zur Zeit geht 
es um 4295 Bauteile, 4245 EK-Konditionen, 349 Kategorien (Typen), 126 
Lagerorte, 434+21 Hersteller/Lieferanten, 58 Baugruppen (Projekte), 7780 
Anlagen/Datasheets/Pinbelegungen/Schematiken/Bilder, u.a. Kleinigkeiten.

Dafür würde ich ein Feld benötigen um den Fortschritt/Status abzulegen.
Ich dachte da an das "Kennz". Nur sehe ich keine Möglichkeit es zu 
editieren (ohne mühsam im SQL herumzufuhrwerken).
"Artikel-Nr2" hingegen ließe sich bequem in der Datentabelle editieren. 
Davon nichts in der Maske.
Und dann stolpere ich (Mauszeiger im Screenshot) auf ein totes Feld, 
ohne Bezeichnung und Inhalt. Es nimmt auch keine Eingaben entgegen. 
Entsteht dort was neues? Falls nein, könnte man es auf "Kennz" legen?

Jedenfalls dachte ich, final die jeweilige PartDB ID ins "Kennz" 
unterzubringen, welche auch später für eine Zuordnung sorgt. Wenn es 
ganz gut läuft springt noch ein toller bidirektionaler Autosync heraus.

Das "Handbuch"-Feld ist auch sehr interessant, da es eine url aufnehmen 
und öffnen kann. Hätte es den Vorteil, das Bauteil gezielt im Browser 
d.h. PartDB zu öffnen.

Wo ich jetzt schon eine Funktion vermisse ist das Umsetzen von 
Bauteilen. Nicht Lager, sondern Bauteil zu anderes (Unter)Bauteil. 
Bauteil zu Meta, umgekehrt, kreuz und quer.

Soweit die ersten Theorieansätze.
---

: Bearbeitet durch User
von Markus M. (mmvisual)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Mister A. schrieb:
> Ja, geht aber immer noch schneller bzw. übersichtlicher als 100
> Einzeltypen zu haben.

Nein, das geht nicht schneller, man hat sicher 100 Untertypen und dazu 
ist "Lager/Gehäuse" nicht ausgelegt, denn man kann darin nicht so 
einfach Filtern. Bei der ersten Ebene gibt es das "Schnellsuchen" 
Eingabefeld, das hat 2 Funktionen, beim einfachen Tippen springt EleLa 
zu dem Datensatz, bei Eingabe von "*" wird automatisch gefiltert und die 
Ansicht reduziert. Die Filter-Taste nebenan aktiviert eine Filterung, so 
auch bei der Typ-Vorwahl.
Damit bekommt man seine Ansicht sehr schnell hin.
Siehe Bild1.

Mister A. schrieb:
> es gibt ja auch noch Transistoren, MOSFETS

Das ist ja auch kein Problem, dazu gibt es die Eingabe von "Typ". Darauf 
kann man dann filtern. Ich habe bei Typ-F8 eine Hauptgruppe "Transistor" 
angelegt, darunter alles was es so gibt (bzw. was ich so habe) (Siehe 
Bild2).

Mister A. schrieb:
> Und dann noch das Verständnisproblem, kommen die Texte aus der Datei
> (ini Pfad), der neuen *.po, der Datenbank oder aus dem System ROM.
> Jedenfalls liest ein Neustart/Öffnen eine andere Quelle ein, als mir
> lieb ist :)
Es gibt in EleLa 2 verschiedene Sprach-Dateien, die "*.po" Datei kommt 
von Lazarus, diese macht die Übersetzung aller "System-Dialog" und wird 
in der INI Datei bei "LanguageFileLCL" eingetragen, wie z.B. Datei 
öffnen Dialog, oder "OK" Taste.
Die andere sind die benutzerdefinierten Texte. Die Regel ist im Prinzip 
relativ einfach, diese wird nacheinander abgearbeitet, man kann die 
Original Übersetzungsdatei in der INI bei "LanguageFile" eintragen. Wenn 
man zusätzliche eigene Übersetzungen hat kann man eine zweite Datei bei 
"LanguageFile2" rein schreiben. Danach schaut EleLa in der Datenbank 
nach ob in der Spalte "Current" eine Übersetzung steht. In der 
Übersetzungs-Datei muss nicht der komplette Satz drin stehen, es reicht 
aus wenn da nur die Zeilen drin sind, die auch tatsächlich geändert 
haben. Das macht das ganze auch übersichtlicher.
Beispiel Deine Übersetzung, Siehe Bild3
Du brauchtst nur in der Translate Tabelle die Zeilen anlegen, die Spalte 
"BezName" beschreibt wie die Komponente auf dem Formular heißt (Der Name 
wie es in der Programmierung vergeben hatte), dann in der Spalte 
"Current" nur überall den Text "Pinout" rein schreiben. Damit kann man 
auf die zusätzliche Sprach Datei in der INI verzichten und alle 
Arbeitsplätze im Netzwerk sehen identisch aus.
Abgesehen davon ist die Übersetzung mit diesem Dialog viel leichter, da 
man Sortieren und Filtern kann.

Im Feld "Kennz" kann man rein schreiben was man mag, auch die ID aus 
Part-DB. Wenn das Feld in der Eingabemaske nicht ist kann man es in der 
Tabelle eingeben. In der Maske sind nur die wichtigsten und Sinnvollsten 
Felder, die Tabelle hat noch deutlich mehr, damit die Maske nicht zu 
groß wird.
Extra-Info für Datenbank-Experten:
Du kannst in der EleLa Datenbank in der Tabelle natürlich auch ein 
zusätzliches Feld anlegen, das kennt dann EleLa nicht, aber EleLa 
meckert auch nicht wenn in der Datenbank plötzlich mehr Felder drin 
stehen. Dann kann man es zwar von EleLa aus nicht bearbeiten, jedoch mit 
einem externen Tool die Daten einfacher synchronisieren.

Mister A. schrieb:
> Das "Handbuch"-Feld ist auch sehr interessant, da es eine url aufnehmen
> und öffnen kann.
Eine URL kann auch das Memo aufnehmen und mit Strg-Klick öffnen
Siehe Hilfe bei Allgemeine Infos > Memo-Feld Eingabefunktionen
Damit ist kann man ziemlich viele Links sich merken.

Mister A. schrieb:
> Wo ich jetzt schon eine Funktion vermisse ist das Umsetzen von
> Bauteilen. Nicht Lager, sondern Bauteil zu anderes (Unter)Bauteil.
> Bauteil zu Meta, umgekehrt, Kreuz und quer.
Du meinst das Menü, siehe Bild4?
Immer wenn bei EleLa irgendwo mit der rechten Maustaste ein Menü 
geöffnet werden kann wird automatisch der Mauscursor auf "Pfeil mit 
Menü" geändert. (Bild5)

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Ohje. Danke Markus.
Ich brauche jetzt echt Urlaub, sonst platzt die Rübe.

Nach 2 Wochen Dauerinput, kein Wunder dass man die einfachsten Sachen 
nicht mehr sieht :)

von Markus M. (mmvisual)


Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
EleLa V3.1.20527 ist nun als Release fertig gestellt.

Über die in EleLa implementierte Download Funktion kann diese EXE 
geladen werden.

Extras-F10 -> Info -> Versionsabfrage

Falls man die automatische Versionsabfrage aktiviert hat erscheint der 
Dialog automatisch nach ein paar Sekunden nachdem man EleLa aktiviert 
hat.
Entweder man lädt die jeweilige EXE die man benötigt oder das 
Setup-Paket.

Die Voraussetzung für die Installation ist die Datenbank mit der 
minimalen Version, siehe Bild1 oder hier:
http://www.mmvisual.de/Hilfe/EleLa/Install.htm

Wie immer vor einem Update ein Backup erstellen.

----------------------------------------------------------
Der Telegram Kanal "EleLa News" der Neuigkeiten:
https://t.me/elela_news

Fragen können gerne hier oder im Chat gestellt werden:
https://t.me/mmvisual_elela

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> EleLa V3.1.20527 ist nun als Release fertig gestellt.
Yeah, eine neue Release. Danke Markus!

Für die Linux-Freunde:
Hardware              | Sqlite | MySQL | MariaDB | PostgreSQL | MSSQL
----------------------+--------+-------+---------+------------+-------
Raspberry 3+4 SDcard  |    x   |  *1   |    *1   |     *1     |   -
Raspberry 3+4 HDD/SSD |    x   |   x   |    *2   |      x     |   -
Desktop               |    x   |  5.8  |    *2   |      x     |   -
Server                |    x   |  8.0  |    *2   |      x     |   -
Virtualisierung       |    x   |  5.8  |    *2   |      x     |   x
----------------------+--------+-------+---------+------------+-------
*1 nicht empfohlen
*2 vorbehaltlich und bedingt, Installationsanleitung des DB-Entwicklers 
sorgfältig beachten

Die Angaben beruhen auf praktischen Test- und Erfahrungswerten.

von Sebastian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe heute nach langem zögern nun auf die V3.1.20527 geupdatet, da es 
mir auch inzwischen in der Aktualisierungsabfrage angezeigt wird. Soweit 
Funktioniert noch alles, leider sind bei mir alle Lieferanten 
verschwunden. Bzw. nur noch vereinzelt. Vor allem bei Bauteilen wo ich 
mehrere Lieferanten hatte, wird entweder gar keiner oder nur einer 
angezeigt. Bug? Oder funktioniert meine Datenbank nicht mehr (MySQL)

Auf die 3.0 kann ich auch nicht mehr zurück wechseln, da dann der Fehler 
kommt, dass die Datenbank nicht gelesen werden kann. Backup habe ich 
zwar, aber ich denke die Daten sind noch vorhanden werden nur nicht 
angezeigt?

von Sebastian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Falscher Alarm. Habe die neue Bedienweise erst nicht ganz kapiert 
-peinlich-
Bei V3.0 werden alle Teile bei Lieferanten angezeigt. Bei V3.1 nur noch 
von dem Teil wo man auf Gehäuse/Lager markiert hat.

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Ja, das musste ich ändern. Wenn man 5 Bauteilvarianten hat und jeweils 
noch 2 Lieferanten mit 4 Preisstaffeln, dann waren 40 Einträge zu sehen 
und wurde unübersichtlich.

von Sebastian (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Werden in Zukunft auch weitere Versender in der Internetabfrage 
unterstützt? Bsp. TME oder Digikey. TME und Digikey bieten soweit ich 
weis eine API an. Eventuell dann nicht nur die Preisabfrage integrieren, 
sondern wenn es die API erlaubt (bei Digikey geht das laut Beschreibung) 
könnte man direkt aus ELELA heraus bestellen. Oder zumindest den 
Warenkorb füllen lassen mit den Bauteilen, welche man bestellen 
möchte/in der Bestellen Liste enthalten sind.

So muss ich halt händisch die Preise raussuchen und wenn es dann ans 
Bestellen geht alle Bestellnummern und Stückzahlen manuell in den 
Warenkorb des jeweiligen Versenders tippen. Geht zwar aber bei vielen 
Bauteilen wird es auch wieder aufwändig.

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Ich muss mir das anschauen wie das funktioniert.
Aktuell bereite ich V4 vor um diese veröffentlichen zu können, daher 
haben diese Lieferanten erst mal kleinere Prio für die Implementierung.

von Mister A. (mratix)


Bewertung
0 lesenswert
nicht lesenswert
Sebastian schrieb:
> So muss ich halt händisch die Preise raussuchen und wenn es dann ans
> Bestellen geht alle Bestellnummern und Stückzahlen manuell in den
> Warenkorb des jeweiligen Versenders tippen.
Datenabfrage ist das eine, Bestellung das andere.

Datenabfragen schützen Dustributoren mit API-Schnittstellen. Jeder kocht 
da seine eigene Suppe und möchte verhindern dass mühsam 
zusammengetragene Daten frei abfließen. Die Verwendung eigener 
Bauteilnr. sind auch ein Grund dafür bzw. der Versuch es zu erschweren. 
Es ist also immer eine individuelle unikate Sache und relativ aufwändig.

Beim Bestellvorgang hingegen zeigen sich die meisten entgegenkommend. Es 
sind ja Kunden, denen bietet fast jeder die Möglichkeit zum 
Upload/Einlesen einer universellen BOM im txt/csv oder anderen Formaten. 
Hier gibt es ein paar Lücken, Bauteile ohne expliziter Bestellnummern 
werden dann durch die eigene Datenbank gejagt um möglichst Treffer zu 
landen.
Hier kann jeder für sich relativ einfach ansetzen.

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen!

Ist dieser Bug schon bekannt?
===
07:03:36 E: SQL Error: Data too long for column 'BestellNr' at row 1 
(spSaveClick_qBAdr)/(  $000000010005F142)
===
IMHO sollte die Applikation darauf achten, dass in dieses Feld nicht 
mehr Zeichen eingegeben werden können, als die Datenbank zulässt...

Die von mir verwendete EleLa Version: V3.1.20517-64 für Windows.

LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Das ist nicht so einfach. Ein Zeichen kann bei UTF8 bis zu 4 Byte 
Speicher belegen. Bei der Berechnung der maximalen Zeichenlänge 
kontrolliert die Datenbank-Komponente daher auf das 4-Fache (anzahl 
Bytes) der erlaubten Zeichen. Wenn man normalen ASCII Text ohne Umlaute 
eingibt so ist 1 Zeichen 1 Byte. Sonderzeichen haben für 1 Zeichen bis 
zu 4 Byte.
Ja ich ärgere mich auch schon seit Jahrzehnte darüber dass in den 
50er/60er/70er Jahren alle Hochsprachenentwickler es komplett verbockt 
haben einen Text "ordentlich" im Speicher zu halten, nicht nur 1 Zeichen 
= 8 Bit.  :-/

PS: Was ist das denn für eine Bestell-Nr die da nicht rein passt?

: Bearbeitet durch User
von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Das ist nicht so einfach. Ein Zeichen kann bei UTF8 bis zu 4 Byte

Das kann ich nachvollziehen. Der aktuelle Zustand führt allerdings zu 
einer inkonsistenten Datenbank, wenn der Fehler beim erstmaligen Anlegen 
des Satzes auftritt, da die Daten anscheinend nur teilweise gespeichert 
werden. Neben dem betroffenen Feld ist auch das Feld "Gehäuse/Lager" 
danach leer, die anderen Felder sind aber befüllt.
Der DB-Konsistenz-Check kann so etwas finden und beheben.

> Speicher belegen. Bei der Berechnung der maximalen Zeichenlänge
> kontrolliert die Datenbank-Komponente daher auf das 4-Fache (Anzahl
> Bytes) der erlaubten Zeichen. Wenn man normalen ASCII Text ohne Umlaute
> eingibt so ist 1 Zeichen 1 Byte. Sonderzeichen haben für 1 Zeichen bis
> zu 4 Byte.

Gibt es in der von Dir verwendeten Sprache das Konstrukt try-catch 
nicht?
Das könnte Dir erlauben den Fehler, den die Datenbank meldet, 
abzufangen, auszuwerten und dementsprechend zu handeln... (z.B. 
Cleanup+Fehlermeldung)
Bzw. um die Dateninkonsistenz zu verhindern, wären auch Datenbank 
Transaktionen geeignet. In diesem Fall wäre Rollback+Fehlermeldung 
sinnvoll.

> PS: Was ist das denn für eine Bestell-Nr die da nicht rein passt?
Ich hatte da keine Bestellnummer, also habe ich den Artikelnamen des 
Verkäufers eingetragen. Ja, ich weiß, das ist Schwachsinn, aber es hat 
eine Schwäche aufgezeigt. :-)

LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Try-Except und Try-Finally gibt es schon. Jedoch sollte EleLa schon 
vorher alles korrekt abfangen. Wenn nicht, dann wirft die Application 
ein "OnError", das erzeugt einen Log incl. Funktionsname innerhalb von 
meinem Quellcode.
Einige wenige Fehler werden mit Try abgefangen, die, die unter Umständen 
auftreten und die entsprechend behandelt werden können. Alle anderen 
Fehler werden komplett geloggt und die muss ich dann per Quellcode 
abfangen, bzw. sind Bugs. Daher bin ich in der Lage mit relativ knapper 
Fehlerbeschreibung hier im Forum den Fehler schnell finden zu können.
Per Gieskannenprinzip Try-Except Blöcke ein zu bauen bringt nichts - 
außer ein Kaschieren von Bugs, die man besser machen könnte. Zudem sehe 
ich dann im Log nichts mehr (und alles sieht toll aus und es 
funktioniert nicht).
Mal schauen, vielleicht finde ich ein relativ einfache praktikable 
Lösung für das Problem.

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Markus M. schrieb:
> Zudem sehe
> ich dann im Log nichts mehr (und alles sieht toll aus und es
> funktioniert nicht).
Nicht unbedingt.
Du kannst ja das Problem abfangen und trotzdem im Log protokollieren.
Das Gießkannenprinzip ist nicht erforderlich, aber ein Insert, Update 
oder Delete in die Datenbank damit abzusichern wäre IMHO ok.

Wie bekommst Du es derzeit eigentlich mit, dass bei einer 
Datenbank-Operation ein Fehler aufgetreten ist?
Über den Return Code oder über eine Exception?
LG. JK

von Markus M. (mmvisual)


Bewertung
0 lesenswert
nicht lesenswert
Exception

von Jaroslaw K. (root666)


Bewertung
0 lesenswert
nicht lesenswert
Dann sollte es kein Problem sein. Die exceptions enthalten alles, was 
man zum protokollieren braucht...
LG. JK

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.