Witam,
utworzyłem sobie prosty skrypt, do przerzucenia danych pomiędzy bazami, który sprawdza czyw baza_a jest tabela memo_xxxx i jak jest to tworzy pustą tabelę memo_xxx w baza_b i zapełnia ją danymi. Odpalam go w konsoli.
Wszystko działa ale w trakcie przerzutu danych, w tabeli docelowej w kolumnie products_description pojawiają się znaki '?' zamiast polskich znaków:
  1. function TableExists($tablename, $db, $link) {
  2. $result = mysql_list_tables($db, $link);
  3. $rcount = mysql_num_rows($result);
  4. for ($i=0;$i<$rcount;$i++) {
  5. if (mysql_tablename($result, $i)==$tablename) return true;
  6. }
  7. return false;
  8. }
  9.  
  10.  
  11. ini_set("memory_limit","3600M");
  12.  
  13. // połączenie z bazą 'baza_a:
  14. $link_a = mysql_connect('localhost','user_a','******');
  15. mysql_select_db('baza_a',$link_a);
  16. mysql_query('set names utf8',$link_a);
  17. mysql_query("SET CHARSET utf8", $link_a);
  18.  
  19. // połączenie z bazą 'baza_b:
  20. $link_b = mysql_connect('localhost','user_b','*******');
  21. mysql_select_db('ruser_b',$link_b) ;
  22. mysql_query('set names utf8',$link_b);
  23. mysql_query("SET CHARSET utf8", $link_b);
  24.  
  25. for($i = 1;$i < 4650; $i++){
  26. if($i < 10) $id = '000'.$i;
  27. elseif($i >= 10 && $i < 100) $id = '00'.$i;
  28. elseif($i >= 100 && $i < 1000) $id = '0'.$i;
  29. else $id = $i;
  30. if(TableExists("memo_$id",'baza_a', $link_a)){
  31. $sql = "select * from memo_$id";
  32. $rez = mysql_query($sql, $link_a) or die($sql);
  33. if(!TableExists("memo_$id",'baza_b', $link_b)){
  34. if(mysql_query("CREATE TABLE `memo_$id` (
  35. `id_typu` int(6) NOT NULL default '0',
  36. `products_id` int(6) NOT NULL default '0',
  37. `products_description` text,
  38. `done` binary(1) NOT NULL default '0',
  39. `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  40. `language_id` int(2) NOT NULL default '19',
  41. PRIMARY KEY (`id_typu`,`products_id`,`language_id`)
  42. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", $link_b)){
  43. echo "tabela memo_$id utworzona"."\r\n";
  44. }
  45. }
  46. while($rec = mysql_fetch_array($rez)){
  47. $sql = "insert ignore into memo_$id (id_typu, products_id, products_description, language_id)
  48. values('".$rec['id_typu']."', '".$rec['products_id']."', '".addslashes($rec['products_description'])."', '".$rec['language_id']."')";
  49. mysql_query($sql, $linka) or die($sql);
  50. }
  51. }else{
  52. echo "brak tabeli memo_$id"."\r\n";
  53. }
  54. }


ma ktoś z Was pomysł jak temu zapobiec?

problem rozwiązany - utworzona baza_b miała domyślnie ustawioną stronę kodową latin1. Po zmianie na utf8 problem ustapił