[vz-users] dbcopy

dies und das 6ecoopen at googlemail.com
Mi Aug 10 18:02:01 CEST 2022


Hallo,

ich habe das Volkszaehler.img noch mal neu aufgespielt, jetzt funktioniert
das anlegen der SQLite Datenbank.
Aber beim kopieren der Daten in die sqlite.db3 auf dem Rpi bekomme ich
jetzt bei der Data Tabelle einen fehler

  /var/www/volkszaehler.org/vendor/bin/dbcopy copy -c /etc/dbcopy1.yaml
entities: copying 1 rows (overwrite)
 [============================] 100%  < 1 sec/< 1 sec  1 rows

properties: copying 7 rows (overwrite)
 [============================] 100%  < 1 sec/< 1 sec  7 rows

entities_in_aggregator: copying 0 rows (overwrite)
    0 [->--------------------------] < 1 sec 6.0 MiB


In CopyCommand.php line 40:

  Table data doesn't have a simple primary key

mfg Sven

Am So., 7. Aug. 2022 um 18:19 Uhr schrieb dies und das <
6ecoopen at googlemail.com>:

> Hallo,
>
> ich möchte dbcopy verwenden, zum Testen habe ich das aktuelle
> Volkszäher.img auf einem Rpi2 installiert
> um Werte in die Datenbank zubekommen ist aktuell ein 1-Wire
> Temperatursensor angeschlossen.
>
> Als Backup Ziel soll mein Win-Homserver dienen auf diesem läuft eine
> Virtuelle Maschine mit einer Aktuellen Debian-11.4.0 Installation,
> MariaDB-Server ist installiert, vz-admin mit rechten und Test-Datenbank
> (pi-test) sind angelegt.
>
> Vom Testsystem (rpi2) kann ich mich mit dem Server verbinden
> mysql -h 192.168.178.23 -uvz-admin -p1234 pi-test
>
> Hier https://wiki.volkszaehler.org/software/tools/dbcopy
> ist beschrieben dass In der Standardinstallation dbcopy direkt nutzbar ist.
> War mir nicht sicher also habe ich folgenden Befehl noch ausgeführt.
>
> sudo chmod +x /var/www/volkszaehler.org/vendor/bin/dbcopy
>
> sudo cp /var/www/volkszaehler.org/etc/dbcopy.dist.yaml /etc/dbcopy.yaml
>
> sudo nano /etc/dbcopy.yaml
> # DATABASE DEFINITION
> source:
>   driver: pdo_mysql
>   host: localhost
>   user: vz
>   password: demo
>   dbname: volkszaehler
> target:
>   driver: pdo_mysql
>   host: 192.168.178.23
>   user: vz-admin
>   password:1234
>   dbname: pi-test
> #  path: sqlite.db3		# path is only used if driver = pdo_sqlite
>  # influxdb target database connection
> influx:
>   dsn: influxdb://localhost:8086
>   dbname: volkszaehler
>   measurement: data
>  # TABLE DEFINITION# ----------------# tables will be processed in the order they are mentioned:#		- foreign keys on target will be dropped#		- if a table is not listed here, it will not be touched# transfer mode#		skip:		table will not be copied#		copy:		entire table will be truncated on target and copied from source#		pk:			selective copy by primary key. only data not present on target# 					will be copied from source.
> tables:
>   entities: copy
>   properties: copy
>   entities_in_aggregator: copy
>   data: pk
>   aggregate: skip
> Nächster Schritt Zieldatenbank erstellen mit
> /var/www/volkszaehler.org/vendor/bin/dbcopy create -c /etc/dbcopy.yaml
>
> Hier bekomme ich folgende Fehlermeldung
>
> Creating target schema
> Creating tables
> PHP Fatal error:  Uncaught Error: Class 'Doctrine\DBAL\Schema\Synchronizer\SingleDatabaseSynchronizer' not found in /home/pi/volkszaehler.org/vendor/andig/dbcopy/src/Command/CreateCommand.php:151
> Stack trace:
> #0 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Command/Command.php(298): DatabaseCopy\Command\CreateCommand->execute()
> #1 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Application.php(1024): Symfony\Component\Console\Command\Command->run()
> #2 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Application.php(299): Symfony\Component\Console\Application->doRunCommand()
> #3 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
> #4 /home/pi/volkszaehler.org/vendor/andig/dbcopy/dbcopy(35): Symfony\Component\Console\Application->run()
> #5 /home/pi/volkszaehler.org/vendor/bin/dbcopy(112): include('/home/pi/volksz...')
> #6 {main}
>   thrown in /home/pi/volkszaehler.org/vendor/andig/dbcopy/src/Command/CreateCommand.php on line 151
> pi at pi-Test:~ $
>
> Ich habe dann mit HeidiSQL das Datenbankschema vom Pi exportiert (ohne Daten) und auf dem Server importiert
>
> [image: pi-test.JPG]
>
> pi at pi-Test:~ $ /var/www/volkszaehler.org/vendor/bin/dbcopy copy -c /etc/dbcopy.yaml
> Dropping FK FK_87C331C781257D5D on properties
> Dropping FK FK_2BD88468DD62C21B on entities_in_aggregator
> Dropping FK FK_2BD88468727ACA70 on entities_in_aggregator
> Dropping FK FK_ADF3F36372F5A1AA on data
> Dropping FK FK_B77949FF72F5A1AA on aggregate
> entities: copying PHP Fatal error:  Uncaught Error: Call to undefined method Doctrine\DBAL\Connection::fetchColumn() in /home/pi/volkszaehler.org/vendor/andig/dbcopy/src/Command/CopyCommand.php:116
> Stack trace:
> #0 /home/pi/volkszaehler.org/vendor/andig/dbcopy/src/Command/CopyCommand.php(223): DatabaseCopy\Command\CopyCommand->copyTable()
> #1 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Command/Command.php(298): DatabaseCopy\Command\CopyCommand->execute()
> #2 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Application.php(1024): Symfony\Component\Console\Command\Command->run()
> #3 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Application.php(299): Symfony\Component\Console\Application->doRunCommand()
> #4 /home/pi/volkszaehler.org/vendor/andig/dbcopy/vendor/symfony/console/Application.php(171): Symfony\Component\Console\Application->doRun()
> #5 /home/pi/volkszaehler.org/vendor/andig/dbcopy/dbcopy(35): Symfony\Component\Console\Application->run()
> #6 /home/pi/volkszaehler.org/vendor/bin in /home/pi/volkszaehler.org/vendor/andig/dbcopy/src/Command/CopyCommand.php on line 116
> pi at pi-Test:~ $
>
>
> Ok dachte ich mir hier kommst nicht weiter also habe ich es so wie in der o.g. Anleitung versucht.
>
> Auf dem Rpi also Sqlite installiert die /etc/dbcopy.yaml angepasst.target:
>   driver: pdo_sqlite
>   host: localhost
>   user: vz-admin
>   password: secure
>   dbname: volkszaehler_backup
>   path: /home/pi/pi-test.db3
>
> Nach Eingabe von /var/www/volkszaehler.org/vendor/bin/dbcopy create -c /etc/dbcopy.yaml
> kommt der Fehlerpi at pi-Test:~ $ /var/www/volkszaehler.org/vendor/bin/dbcopy create -c /etc/dbcopy.yaml
> Creating target schema
>
> In Exception.php line 22:
>
>   Operation 'Doctrine\DBAL\Platforms\AbstractPlatform::getListDatabasesSQL' is not supported by platform.
>
> create [-c|--config CONFIG]
>
> pi at pi-Test:~ $
>
> ich habe Tante G befragt aber nichts gefunden was mir hilft.
>
> Würde mich freuen wenn mir jemand helfen könnte das Problem zu lösen erst mal egal welchen Ansatz, Server mit Mariadb oder lokal mit Sqlite
>
> mfg
>
> Sven
>
>
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20220810/0ebf932b/attachment-0001.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : pi-test.JPG
Dateityp    : image/jpeg
Dateigröße  : 46793 bytes
Beschreibung: nicht verfügbar
URL         : <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20220810/0ebf932b/attachment-0001.jpe>


Mehr Informationen über die Mailingliste volkszaehler-users