update über zwei Datenbanken MySQL

belubaba

belubaba

Tripel-As
Hallo Zusammen,

ich habe gerade das Problem das ich ein Feld einer Tabelle in einer Datenbank aus dem Felde der gleichen Tabelle in einer anderen Datenbank aktualisieren muss.

Hier war meine Idee dazu die im phpmyadmin ausgeführt werden sollte:

Code:
UPDATE `db1`.`products_attributes_download` 
set `db1`.`products_attributes_download`.`products_attributes_maxdays` 
= `db2`.`products_attributes_download`.`products_attributes_maxdays` 
where `db2`.`products_attributes_download`.`products_attributes_id` =
`db1`.`products_attributes_download`.`products_attributes_id`

PHP MyAdmin schreibt mir dazu: Unbekanntes Tabellenfeld 'db2.products_attributes_download.products_attributes_id' in where clause

Tabellen Kopieren funktioniert auf diese weise ohne Probleme ein Update offensichtlich nicht. Funktioniert das grundsätzlich nicht oder hab ich einfach einen Fehler im Statement?

Gruß

b.
 
Der Grundgedanke ist falsch. Der Zugriff auf eine fremde Datenbank ist schon richtig. "datenbankname.tabellenname.feldname" Voraussetzung dabei ist, dass der Datenbankuser auf beide DBs Zugang hat.
Vergleiche dein Statement mal mit einem "normalem" update:
Code:
update table set
   field_1='fooo'
where
   field_2='bar';
Du gibst deinem Update Statement aber nicht einen Wert, sondern eine ganze Spalte. (Vergleichbar mit "field_1=field_2") Das kann ja nicht funktionieren, da das Update einen Wert erwartet, und nicht mehrere.

Daher musste da mit einen Subquery arbeiten:
Code:
update db1.table1 set
   db1.table.1.field_foo = (select field_bar from db2.table2 where foo='bar')
where
   db1.table.1.field_foo = 'lala'
Dabei muss darauf geachtet werden, das dass Subquery nur einen Wert ausspuckt. Also eine Spalte, und einen Datensatz.

Was hast du eigentlich vor?
 
Was hast du eigentlich vor?

Ich habe eine Shop Entwicklungsdatenbank in der die Produkte von mehreren Personen gepflegt werden.

Die Produkttabellen werden jeden Morgen vom Entwicklungsshop in den Live Shop geschoben.
Dummerweise steckt in den Tabellen die Produktanzahl. So das ich mir diese überschreiben würde. (Werden ja zwischen den Synchronisationen bereits vorhandene Produkte verkauft)

Also muss ich vorher ein Update vom Liveshop zum Entwicklungsshop machen um diese Werte glattzuziehen und danach kann ich die Synchronisation laufen lassen ...

Also brauche in ein Update zwischen zwei Datenbanken.

Danke für den Hinweis. Hatte echt ein Brett vorm Kopf :)

Jetzt schaut die Sache so aus und funktioniert auch ...

UPDATE `oscshop`.`products_attributes_download` set `oscshop`.`products_attributes_download`.`products_attributes_maxdays` = (SELECT `osentw`.`products_attributes_download`.`products_attributes_maxdays` FROM `osentw`.`products_attributes_download` WHERE `osentw`.`products_attributes_download`.`products_attributes_id` = `oscshop`.`products_attributes_download`.`products_attributes_id`)
 
Zuletzt bearbeitet:

Ähnliche Themen

MySQL Ring-Replikation

Zurück
Oben