Baze podataka
Desni klik na bazu u bočnoj traci daje njezina svojstva, promjenu character seta i preimenovanje.
Svojstva baze
Svojstva baze prikazuju naziv baze, zadani character set i collation. Uz svaku vrijednost je gumb Kopiraj, a Kopiraj sve stavlja sve tri u međuspremnik odjednom:
Naziv: shop
Character set: utf8mb4
Collation: utf8mb4_unicode_ciŠto te dvije vrijednosti znače ovisi o vrsti baze:
| Baza | Character set | Collation |
|---|---|---|
| MySQL / MariaDB | Zadani character set baze | Zadani collation |
| PostgreSQL | Encoding (npr. UTF8) | datcollate, lokalizacija po kojoj se tekst sortira |
| SQL Server | Kodna stranica collationa (npr. CP1250, UTF-8 (CP65001)) | Collation baze |
| SQLite | PRAGMA encoding | BINARY |
Promjena character seta i collationa
Na MySQL-u i MariaDB-u prozor svojstava ima Promijeni character set…. Odaberite character set — collation se prebaci na zadani za taj set, a možete odabrati i drugi.
Uz uključeno Primijeni i na sve tablice i polja u bazi (zadano) promjena ne staje na zadanoj vrijednosti baze. Prozor broji tablice i tekstualna polja i pokazuje koliko tablica stvarno treba konverziju; tablice koje već imaju odabrani collation preskaču se.
Primijeni traži potvrdu, a zatim:
- mijenja zadane postavke baze (
ALTER DATABASE … CHARACTER SET … COLLATE …), pa tablice kreirane od sada dobivaju novi set; - konvertira tablice jednu po jednu s
ALTER TABLE … CONVERT TO CHARACTER SET …, što mijenja zadani set tablice i svaki stupac tipaCHAR,VARCHAR,TEXT,ENUMiSET.
Traka napretka pokazuje koja se tablica trenutno konvertira. Zaustavi prekida nakon tablice koja je u tijeku. Tablica koja ne uspije ne zaustavlja ostale; na kraju je svaka greška ispisana s nazivom tablice.
Strani ključevi na tekstualnim stupcima ne smetaju: svaka konverzija radi s isključenom provjerom stranih ključeva, pa se tablica-dijete može promijeniti prije roditelja. Ključevi ostaju na mjestu i provode se kao i prije.
Svaka se tablica ponovno gradi
CONVERT TO prepisuje tablicu i drži je zaključanom dok traje, što na velikoj tablici potraje. Prelazak na višebajtni set kao što je utf8mb4 može i pretvoriti TEXT stupac u MEDIUMTEXT da zadrži kapacitet. Prije toga napravite sigurnosnu kopiju.
Pogledi nemaju vlastite stupce i ne konvertiraju se. Procedure i funkcije zadržavaju collation s kojim su kreirane; ako moraju koristiti novi, kreirajte ih ponovno.
PostgreSQL, SQL Server i SQLite prikazuju vrijednosti samo za čitanje: nijedan od njih to ne može sigurno promijeniti na postojećoj bazi.
Preimenovanje baze
Preimenuj bazu… nalazi se u izborniku desnog klika na bazu za MySQL, MariaDB, PostgreSQL i SQL Server. SQLite baza je datoteka — preimenujte je kroz uređivanje konekcije.
PostgreSQL i SQL Server
Oba preimenuju jednom naredbom (ALTER DATABASE … RENAME TO i ALTER DATABASE … MODIFY NAME). Tablice, ostali objekti i prava ostaju gdje jesu.
Server za to traži bazu samo za sebe. Prozor pokazuje koliko drugih veza je koristi, a Prekini ostale veze ih najprije izbacuje — njihove nedovršene transakcije se poništavaju. Vlastite veze prema bazi NabuSQL zatvara sam.
Na SQL Serveru fizičke datoteke (.mdf, .ldf) zadržavaju stara imena.
MySQL i MariaDB
MySQL i MariaDB nemaju naredbu za to, pa NabuSQL gradi bazu pod novim imenom. Prozor objašnjava korake i navodi što baza sadrži, a gumb Preimenuj ostaje neaktivan dok ne označite Razumijem rizik i imam backup baze.
Što se događa:
- Sve definicije koje se ne mogu premjestiti — okidači, pogledi, procedure, funkcije, eventi, prava — najprije se pročitaju i spreme u
nabusql_rename_<baza>_<vrijeme>.sqlu mapi Downloads. Ako se ijedna ne može pročitati, ništa se ne mijenja. - Kreira se nova baza s istim character setom i collationom.
- Okidači se brišu (MySQL ne premješta tablicu koja ga ima), a zatim se sve tablice premjeste jednom naredbom
RENAME TABLE. To je brzo — mijenjaju se samo metapodaci, redci se ne kopiraju. - Procedure i funkcije, pogledi, okidači i eventi ponovno se kreiraju u novoj bazi. Reference napisane kao
`stara`.tablicapreusmjeravaju se na novo ime. Okidači zadržavaju redoslijed okidanja isql_modes kojim su kreirani. - Prava korisnika na bazu, njezine tablice i rutine kopiraju se na novo ime.
- Tek ako su svi koraci uspjeli, stara se prava ukidaju i briše se stara, tada već prazna baza.
Ako korak 3 ne uspije, vraća se: okidači se ponovno kreiraju, a nova baza briše. Ako nešto ne uspije nakon što su tablice premještene, stara baza se zadržava s onim što se nije moglo ponovno kreirati, a rezultat navodi svaki korak s njegovim statusom.
Nije atomarno i ništa izvan ove baze se ne mijenja
Pogledi, rutine i okidači u drugim bazama te aplikacije koje se spajaju na staro ime i dalje koriste staro ime. Dok traje preimenovanje, nitko drugi ne bi smio raditi s bazom.
Kad račun iz DEFINER-a ne postoji ili nemate pravo da ga koristite, objekt se kreira s vama kao vlasnikom, i rezultat to navodi.
Što NabuSQL ažurira umjesto vas
Nakon svakog preimenovanja NabuSQL svoje reference prebacuje na novo ime: spremljene upite, otvorene kartice, zadatke u Task Scheduleru, zadanu bazu konekcije i mapu sa spremljenim upitima na disku.
