Hrvoje Novak u rubrici Programiranje od Hrvoje Novak
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

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 423 👀
1 odgovor 778 👀
Hrvoje Novak 30.06.2014. pitanje u rubrici Programiranje od Hrvoje Novak
1 odgovor 425 👀
1 odgovor 368 👀
1 odgovor 412 👀
Goran Dren 13.04.2014. pitanje u rubrici Web Hosting od Goran Dren
1 odgovor 324 👀
1 odgovor 387 👀
2 odgovora 2.0k 👀
2 odgovora 529 👀
Mirela Benić 29.09.2020. pitanje u rubrici Softver od Mirela Benić
Znatko predstavlja

Digital Commerce & Business Conference

Umag
od 8. do 12. 05. 2024.

REGISTRACIJA
Znatko predstavlja

Umjetna inteligencija u službi prodaje

Zagreb
24. - 25. 10. 2024.

ULAZNICE

13.7k pitanja

22.3k odgovora

8.3k komentara

1.6k korisnika

...