MySQL syntaks

peque
Antal: 954
Tilmeldt:
20-04-2005
User is offline
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:

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


mich
mich's picture
Antal: 973
Tilmeldt:
13-10-2007
User is offline
Re: MySQL syntaks

Nu er jeg ikke nogen SQL-haj, men har dog brugt det af og til.
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.

./mich


Prezioso
Prezioso's picture
Antal: 551
Tilmeldt:
17-05-2008
User is offline
Evt oplys version af mysql /

Evt oplys version af mysql / workbench.
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?


marlar
Antal: 2952
Tilmeldt:
05-12-2009
User is online
Der står noget om det her:

Der står noget om det her: https://dba.stackexchange.com/a/68376


peque
Antal: 954
Tilmeldt:
20-04-2005
User is offline
Hey Alle Tak for svarene -

Hey Alle

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


lbm
lbm's picture
Antal: 818
Tilmeldt:
14-06-2006
User is offline
For mig virker det 100% som

For mig virker det 100% som om, du benytter dig af replicate-db-do eller replicate-db-ignore ? eller måske endda begge?
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/replicatio...
https://dev.mysql.com/doc/refman/5.7/en/replicatio...


peque
Antal: 954
Tilmeldt:
20-04-2005
User is offline
jeg har ikke replicate-db-do

jeg har ikke replicate-db-do eller repliicate-db-ignore i mine setup, da det netop er en af de faldgruber man kan ryge i - men nej var klar over disse og endnu mere derfor det ikke giver mening!