| 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: 15 let
|
|||
0