Autor | Zpráva | ||
---|---|---|---|
Rash Profil * |
#1 · Zasláno: 10. 2. 2011, 14:03:11
V DB mám znaky jako Ã, é, Å™, Ä, Ä› atd.
Někdo mi poradil, že to mám opravit použitím následujících příkazů: 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; Problém je ten, že tabulek mám v db strašně moc a udělat to ručně je nad mé síly. :( Nevíte, jak to zautomatizovat? |
||
Kajman_ Profil * |
#2 · Zasláno: 10. 2. 2011, 14:06:23
Nevíte, jak to zautomatizovat?
http://php.vrana.cz/prevod-kodovani-mysql.php |
||
Rash Profil * |
#3 · Zasláno: 10. 2. 2011, 15:04:34
Dík za link, ale moc se v tom nevyznám - nepatřím mezi php guru.
Jak to spojím s DB? Autor to nemá nijak vysvětlené. [/pre] <?php if ($argc != 3 || !mysql_select_db($argv[1])) { exit("Usage: php $argv[0] db collation\n"); } $collation = $argv[2]; function mysql_convert($query) { //~ echo "$query;\n"; $return = mysql_query($query); echo mysql_error(); return $return; } mysql_convert("ALTER DATABASE $argv[1] COLLATE $collation"); $result = mysql_query("SHOW TABLES"); while ($row = mysql_fetch_row($result)) { mysql_convert("ALTER TABLE $row[0] COLLATE $collation"); $result1 = mysql_query("SHOW COLUMNS FROM $row[0]"); while ($row1 = mysql_fetch_assoc($result1)) { if (preg_match('~char|text|enum|set~', $row1["Type"])) { mysql_convert("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] CHARACTER SET binary"); mysql_convert("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] COLLATE $collation" . ($row1["Null"] ? "" : " NOT NULL") . ($row1["Default"] && $row1["Default"] != "NULL" ? " DEFAULT '$row1[Default]'" : "")); } } } mysql_free_result($result); ?> |
||
Kajman_ Profil * |
#4 · Zasláno: 10. 2. 2011, 15:34:35
Tak si tam připojení přidejte...
<?php header('Content-type: text/plain'); $collation = 'utf8_czech_ci';//nastavte si dle potreby - vetsinou na kodovani stranek, ze ktere se tam dostala spatne diakritika $jmenodb='jmenoDatabaze'; //pripojeni $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Not connected : ' . mysql_error()); } // vyber databaze $db_selected = mysql_select_db($jmenodb, $link); if (!$db_selected) { die ('Can\'t use '.$jmenodb.' : ' . mysql_error()); } function mysql_convert($query) { echo "$query;\n"; //$return = mysql_query($query); //echo mysql_error(); //return $return; } mysql_convert("ALTER DATABASE $jmenodb COLLATE $collation"); $result = mysql_query("SHOW TABLES"); while ($row = mysql_fetch_row($result)) { mysql_convert("ALTER TABLE $row[0] COLLATE $collation"); $result1 = mysql_query("SHOW COLUMNS FROM $row[0]"); while ($row1 = mysql_fetch_assoc($result1)) { if (preg_match('~char|text|enum|set~', $row1["Type"])) { mysql_convert("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] CHARACTER SET binary"); mysql_convert("ALTER TABLE $row[0] MODIFY $row1[Field] $row1[Type] COLLATE $collation" . ($row1["Null"] ? "" : " NOT NULL") . ($row1["Default"] && $row1["Default"] != "NULL" ? " DEFAULT '$row1[Default]'" : "")); } } } mysql_free_result($result); ?> |
||
Rash Profil * |
#5 · Zasláno: 10. 2. 2011, 16:16:18
Tak jsem to spustil a nepozoruji výsledek... V DB je u sloupců pořád latin1_swedish_ci. :/
|
||
Kajman_ Profil * |
#6 · Zasláno: 10. 2. 2011, 16:26:15
Nic nebylo na výstupu stránky? Mělo by to jen zobrazit návrh příkazů, které jsou potřeba.
|
||
Rash Profil * |
#7 · Zasláno: 10. 2. 2011, 16:35:23
Tak to se omlouvám, blbě jsem to pochopil. Myslel jsem, že to rovnou tu databázi opraví.
Příkazy jsem spustil a vypsalo to tohle: ALTER TABLE searchcore_text MODIFY keywordtext mediumtext CHARACTER SET BINARY ; #1283 - Column 'keywordtext' cannot be part of FULLTEXT index Další dotazy se asi neprovedly, že? Co s tím? |
||
Kajman_ Profil * |
#8 · Zasláno: 10. 2. 2011, 16:39:23
Je to napsáto v tom původním článku, že tohle ten skript neřeší a buď si tedy fulltextové indexy zrušíte sám ručně a pak zase vytvoříte nebo si upravíte skript, aby to dělal sám.
|
||
Rash Profil * |
#9 · Zasláno: 10. 2. 2011, 17:01:04
Kajman:
„Je to napsáto v tom původním článku, že tohle ten skript neřeší a buď si tedy fulltextové indexy zrušíte sám ručně a pak zase vytvoříte nebo si upravíte skript, aby to dělal sám.“ Jo, tak tomuhle už vůbec nerozumím. Mohl byste mi ukázat, jak by to mělo vypadat, prosím? |
||
Kajman_ Profil * |
#10 · Zasláno: 10. 2. 2011, 21:26:06
Ukázku máte, víte co se v ní chybí. Buď si to naklikejte ručně nebo zkuste někoho sehnat v práce a zakázky, kdo Vám to doprogramuje, když to nechcete dělat sám.
|
||
Rash Profil * |
#11 · Zasláno: 10. 2. 2011, 22:26:46
OK, díky za pomoc.
|
||
Časová prodleva: 13 let
|
0