MySQL syntaks
Hej Gruppe.
Jeg ville høre om en der kunne forklare mig dette issue jeg har her.
Jeg har 3 Databaser som jeg replikerer hjem.Men har et problem omkring selve replikeringen jeg ikke lige kan oiverse.
Normalt arbejder jeg via Workbench eller MySQL konsol.
Når jeg udfører følgende statement i myssql konsol:
Indsættes data og der replikeres fra Master til Slave.
Udfører jeg denne kommando fra Workbench - Indsættes data - MEN der replikeres ikke
Bruger jeg istedet disse kommandoer fra Workbench:
Indsættes data og der replikeres data videre.
Nu er det således at jeg vil mene det er 2 ens kommandoer, og alligevel ikke.
Der er lavet et webinterface der skal indsætte data i DB og dette skal replikeres hjem. og har ud fra dette fundet frem til dette problem, Men jeg skal indrømme at jeg ikke kan se hvorfor der er forskel på disse 2 kommandoer reelt
Jeg ville høre om en der kunne forklare mig dette issue jeg har her.
Jeg har 3 Databaser som jeg replikerer hjem.Men har et problem omkring selve replikeringen jeg ikke lige kan oiverse.
Normalt arbejder jeg via Workbench eller MySQL konsol.
Når jeg udfører følgende statement i myssql konsol:
INSERT INTO Operational_Data.Repl_Test(ID,Number) VALUES ('1','2');
Indsættes data og der replikeres fra Master til Slave.
Udfører jeg denne kommando fra Workbench - Indsættes data - MEN der replikeres ikke
Bruger jeg istedet disse kommandoer fra Workbench:
Use Operational_Data
INSERT INTO Repl_Test(ID,Number) VALUES ('1','2');
Indsættes data og der replikeres data videre.
Nu er det således at jeg vil mene det er 2 ens kommandoer, og alligevel ikke.
Der er lavet et webinterface der skal indsætte data i DB og dette skal replikeres hjem. og har ud fra dette fundet frem til dette problem, Men jeg skal indrømme at jeg ikke kan se hvorfor der er forskel på disse 2 kommandoer reelt
Kommentarer6
Re: MySQL syntaks
Dit sidste eksempel (Workbench) ligner mere noget, jeg genkender, mens det første (MySQL konsol) med sin . notation mere ligner et interface fra Pascal eller lign.
For det første vil jeg sige, at du ikke kan forvente samme syntaks fra forskellige interfaces, og for det andet ville jeg bruge den syntaks, der virker alle, eller de de fleste steder, hvis jeg skulle vælge. Ingen grund til at gøre det forskelligt, hvis den samme syntaks virker.
Evt oplys version af mysql /
Jeg er ret sikker på begge dele burde virke begge steder.
Men jeg forstår ikke hvad du mener med indsættes data og replikeres videre, samt at den indsætter data og ikke replikerer videre?
Samt nogen fejl msg?
Der står noget om det her:
Hey Alle Tak for svarene -
Tak for svarene - men er ikke kommet videre end som så
Version:
Mysql 8.0.16
Workbench 8.0.16 ( hedeer den i download) https://dev.mysql.com/downloads/workbench/
Meningen er vi indsætter noget data via et webinterface. Det data vi indsætter - kommer i tabellen på MASTER - Men det replikeres ikke videre til slaves.
Vores syntaks i webinterfacet siger følgende:
INSERT INTO Operational_Data.Repl_Test(ID,Number) VALUES ('1','2');
Dette data replikeres ikke af en eller anden årsag. jeg har så undersøgt tingene og testet det hele igennem workbench / konsol
Indsætter jeg den samme data igennem Workbench med samme kommando som Webinterfacet - replikeres det stadigvæk ikke.
Men skriver jeg det så sådanne:
Use Operational_Data
INSERT INTO Repl_Test(ID,Number) VALUES ('1','2');
Så replikeres al data som forventet. i Min verden er det nøjagtig samme syntaks ( altså selve kommandoen er den samme) så hvad er det der gør at en benævnelse Database.tabel ikke replikeres, Når nu data reelt kommer i den tabel og vi kan se der komemr data ind.
Så tænker jeg hmmm det er nok replikeringen der fejler - men så snart jeg angiver use DB først er der ingen problemer.
I min verden giver det ikke meningen at man fra et webinterface skal bruge USE kommandoen først inden du kan indsætte data der skal replikeres
og det sjove syntes jeg jo ligesom at der slet ikke kommer fejl i logfiler omkring manglende replikeriing.
Jeg er enig i at det burde fungere med begge statements - men jeg kan desværre bare konstatere at det ikke er tilfældet.
For selvom det data der kommer fra webinterfacvet indsættes i databasen, kan jeg ikke forstå hvorfor det ikke skulle replikeres.
Men som linket antyder er det noget med den default database der er valgt, men giver INGEN mening for mig at man skal bruge USE komandoen først inden man kan indsætte data der replikeres videre
For mig virker det 100% som
Har du disse i dine configs ? I så fald, så er dette bare én af de pitfalls, man kan ryge i, og én af flere grunde til dette frarådes.
Benytter du dig replicate-do-db så replikerer den KUN det der sker nede i den DB du arbejder i (hvis denne db altså er specificeret), og da du arbejder i master, vil det ikke blive replikeret.
Ved at du skriver "use Operational_Data;" , så arbejder du i denne nu, hvorfor det virker, og IKKE i master.
https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html#…
https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html#…
jeg har ikke replicate-db-do