480 pregleda
Hrvoje Novak u rubrici Programiranje od Hrvoje Novak (12.9k bodova)
uređen od Znatko

Guglam, čitam i ništa. Sve je to jedna zbrka od rješenja koja mi (još) ne rade. Zna tko kako se elegantno može cijela baza sa svim tablicama koja imaju polja u formatu Windows-1250 postaviti u charset UTF-8?

Naravno, treba sačuvati sve vrijednosti unutar tablica.

Našao sam jednostavan kod, ne kužim poantu, ali mi neće raditi.

alter table TABLE_NAME modify FIELD_NAME blob;

alter database DATABASE_NAME charset=utf8;

alter table TABLE_NAME modify FIELD_NAME varchar(255) character set utf8;

Je, stavio sam ja svoje podatke za table_name, filed_name, database_name....i padam već na prvom upiti u MySQL. Poruka o grešci ispisuje sljedeče:

error: BLOB/TEXT column 'ime' used in key specification without a key length

Pomagajte drugovi.

Prijavite se ili registrirajte kako biste odgovorili na ovo pitanje.

1 odgovor

+3 glasa
Duh Robot od Duh Robot (3.2k bodova)

Pozdrav!

Jedan od načina je napraviti eksport(dump) cijele baze, zamijeniti default charset iz Windows-1250 u UTF-8 i importirati nazad u MySQL.

Ovisno o alatu i platformi na kojoj se radi, postupak se može razlikovati, ali u principu je vrlo slično.

Za sam eksport/import se može koristiti command line program "mysqldump", ako je korisnik upoznat s takvim načinom rada, a može se koristiti i neki od desktop ili web upravitelja MySQL bazom podataka poput "MySQL Workbench" za desktop ili "Adminer" za web.

Sama zamjena charseta se može jednostavno napraviti funkcijom "Search&Replace" unutar text datoteke koja se dobije prilikom eksportiranja baze u nekom tekst editoru. Za tu namjenu preporučujem program pod nazivom "Notepad++".

Moguće je da se prilikom importiranja neće neki specijalni znakovi dobro spremiti u bazu, pa je poželjno na vrh datoteke prije naredbe za kreiranje baze dodati naredbu "SET NAMES utf8;".

Primjer SQL skripte za kreiranje baze s UTF-8 charsetom bi mogao izgledati ovako:

SET NAMES utf8;
DROP DATABASE IF EXISTS `baza`;
CREATE DATABASE `baza`
USE `baza`;

DROP TABLE IF EXISTS `korisnici`;
CREATE TABLE `korisnici` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ime` varchar(25) NOT NULL,
  `prezime` varchar(50) NOT NULL,
  `e-mail` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Slična pitanja

2 odgovora
Mario Daka 30.06.2014. pitanje u rubrici Web Hosting od Mario Daka (15.8k bodova)
1 odgovor
Hrvoje Novak 30.06.2014. pitanje u rubrici Programiranje od Hrvoje Novak (12.9k bodova)
1 odgovor
Mario Daka 15.02.2014. pitanje u rubrici Programiranje od Mario Daka (15.8k bodova)
1 odgovor
Goran Dren 21.03.2014. pitanje u rubrici Web Hosting od Goran Dren (5.4k bodova)
1 odgovor
Goran Dren 13.04.2014. pitanje u rubrici Web Hosting od Goran Dren (5.4k bodova)
Znatko medijski pokriva

NEM Zagreb 2022



Središnje mjesto okupljanja producenata, scenarista, produkcijskih kuća, predstavnika FTA televizija, pay TV kanala, streaming servisa te ostalih stvaratelja sadržaja

Zagreb, 07. - 09.12.2022.

ULAZNICA
Znatko medijski pokriva

WINE EnoGASTRO Vip Event 2023



Rijeka, 1. ožujka 2023.
Novigrad (Istra), 3. ožujka 2023.
Split, 15. ožujka 2023.
Zadar, 17. ožujka 2023.
Zagreb, 29. ožujka 2023.

Besplatan ulaz za uzvanike

Medijska platforma Znatko

NAJNOVIJE VIJESTI

Impressum | Znatkova redakcija

9.6k pitanja

15.3k odgovora

3.5k komentara

1.5k korisnika

...