Forum » Programiranje » mysql
mysql
BRBR ::
Torej tale problem še ni čisto definiran ....
1. Tabelo sem z MySql selil na Maria db (update podatkov) in nazaj na MySql (staro varianto sem shranil)
2. Če zdaj gledam create code stare in nove je enak razen autoinc ki je na novi manjši (recimno da se je resetiral pri repair/optimize ? ker je pač nekaj manj recordov)
3. Na novi tablei mi en (katerikoli) insert .. on duplicate key update - naredi update "kr enega recorda", ne skužim zakaj niti ne vidim logike na točno tem insertu.
Dam nazaj na staro tabelo in vse je OK, točno ta insert naredi insert.
ni ravno jasno vprašanje, če je že kdo imel podobne težave ....
1. Tabelo sem z MySql selil na Maria db (update podatkov) in nazaj na MySql (staro varianto sem shranil)
2. Če zdaj gledam create code stare in nove je enak razen autoinc ki je na novi manjši (recimno da se je resetiral pri repair/optimize ? ker je pač nekaj manj recordov)
3. Na novi tablei mi en (katerikoli) insert .. on duplicate key update - naredi update "kr enega recorda", ne skužim zakaj niti ne vidim logike na točno tem insertu.
Dam nazaj na staro tabelo in vse je OK, točno ta insert naredi insert.
`unique_row_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
......
PRIMARY KEY (`unique_row_id`),
UNIQUE INDEX `Index 3` (`id_tezaver`, `l2`, `term`),
UNIQUE INDEX `key_latin_unique` (`key_latin_unique`),
......
)
COLLATE='utf8_slovenian_ci'
ENGINE=InnoDB
ROW_FORMAT=DYNAMIC
AUTO_INCREMENT=2261055
ni ravno jasno vprašanje, če je že kdo imel podobne težave ....
- spremenil: BRBR ()
BRBR ::
Problem je v tem, če npr staro tabelo tab1 preimenuješ v tab1_old. Potem zgleda avtomatsko vsi trigerji kažejo na tab1_old.
In za novo tab1 ni nobenih trigerjev.
In za novo tab1 ni nobenih trigerjev.
Lonsarg ::
Triger je del tabele, torej ko delaš novo tabelo "tab1" vključiš v create skripto tudi trigerje, indexe, constrainte, FGje,.. In potem bosta po končanem renamu tako old kot nova imela vse kar potrebujeta. Me je že teplo, ko sem nek index pozabil in je potem produkcija blazno počasi delala:) Poleg tega odvisno od baze je lahko rename funkcija celo tako pametna, da bo foreign keya NA to tabelo šla spreminjat, v tem primeru moraš še te ročno popravljat.
Kar se pa autoinc tiče pa niti slučajno se ne bi smel pri migraciji spremenit, si zgledal našel bug, ki ga migracija ne pohendla dobro. Namreč autoinc/identity določa kakšen bo naslednji ID pri insertu(NE zagotavlja pa unikatnosti, če kdo(naprimer program, ki ti je delal export skripto) šari po autoinc). Če se ti je autoinc spremenil na manjšega, kot je maksimalni ID v tvoji tabeli potem je točno to vzrok tvoje napake.
Rešitev? Po migraciji za vse tabele z autoinc spiši skripto, ki "reseeda" autoincrement. In sicer nastavi ga na MAX ID + 1:
https://stackoverflow.com/questions/892...
Kar se pa autoinc tiče pa niti slučajno se ne bi smel pri migraciji spremenit, si zgledal našel bug, ki ga migracija ne pohendla dobro. Namreč autoinc/identity določa kakšen bo naslednji ID pri insertu(NE zagotavlja pa unikatnosti, če kdo(naprimer program, ki ti je delal export skripto) šari po autoinc). Če se ti je autoinc spremenil na manjšega, kot je maksimalni ID v tvoji tabeli potem je točno to vzrok tvoje napake.
Rešitev? Po migraciji za vse tabele z autoinc spiši skripto, ki "reseeda" autoincrement. In sicer nastavi ga na MAX ID + 1:
https://stackoverflow.com/questions/892...
Zgodovina sprememb…
- spremenil: Lonsarg ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [SQL] primary key inkrementalno dodajanje (strani: 1 2 )Oddelek: Programiranje | 5384 (4574) | ejresnevem |
» | MySQL RelacijeOddelek: Izdelava spletišč | 1103 (869) | mkos2 |
» | MySql Vprasanje - problem dupliciranih kljucevOddelek: Izdelava spletišč | 1436 (1258) | KernelPanic |
» | PHP - pomočOddelek: Izdelava spletišč | 1858 (1502) | BlueRunner |
» | portal ostal, baza slaOddelek: Izdelava spletišč | 1829 (1714) | bombacina |