mysqldump. кодировка.
UP
почитать http://dev.mysql.com/doc/refman/5.1/en/upgrading-from-5-0.ht... ?
create table и insert в дампе выглядят одинаково для удачных и неудачных таблиц?
почитать багзиллу?
обновить версии?
написать в багзиллу?
да, еще написать скрипт, который будет добавлять нужные строчки
bzcat dump|script|mysql
$2:16 steel ...2008-03-02/sql22(0/2)$ mysql -u igor -p -h db.pro drupal_vipbook < aaa.sql
Enter password:
ERROR 1062 (23000) at line 2008: Duplicate entry '15000' for key 1
вероятно потому, что там буквки не в utf,как хотелось бы, а в win1251
кусок дампа(в win1251)
DROP TABLE IF EXISTS `vipbook_search_total`;
CREATE TABLE `vipbook_search_total` (
`word` varchar(50) NOT NULL default '',
`count` float default NULL,
PRIMARY KEY (`word`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
—
— Dumping data for table `vipbook_search_total`
—
LOCK TABLES `vipbook_search_total` WRITE;
/*!40000 ALTER TABLE `vipbook_search_total` DISABLE KEYS */;
INSERT INTO `vipbook_search_total` VALUES ('0',0.30103'000руб',0.124939'1',0.0124263)
игрался со всякими параментрами mysqldump, добиться того, чтобы строки стали в utf не получилось.(дамп делаю c --opt без других параметров)
т.е. есть таблицы которые в utf, а есть таблицы, которые в win.
при этом в оригинальной базе всё в uft.
ну так покажи строку 2008 от начала insert
я её и запостил. после строчек "кусок дампа(в win1251)"
если дамп в cp1251, сотри строчку
/*!40101 SET NAMES utf8 */;
в начале
либо с помощью iconv конвертируй полностью текст дампа в utf8
лучше посмотри содержание таблички куда заливал и сравнии с дампом, будет понятно на какой строке умер
в дампе получилось сразу 2 кодировки. в этом-то и проблема
тогда то что я советовал в начале
так нету там '15000'
там очень длинная запись.
где-то в серединке есть
издеваешься?
странно что у тебя просто так возникла cp1251
сделать дамп с помощью
mysqldump --default-character-set=cp1251
пробовал?
хочешь, чтобы я там 1500 искал.
там есть 2 записи
15000 0.124939
15000руб 0.176091
из-за utf "руб" обрезается, вот и получаем duplicate
я всё равно не понимаю, почему некоторые перекодирует, некоторые нет.
вообще ничего не перекодирует.
я тестю на двух таблицах. одна постоянно в utf, другая в win1251
а в самой базе они у тебя какие? тоже разные?
всё в utf8 в базе.
откуда cp1251 я не понимаю.
скачал бинарник 5.1, вроде фурычит.
Оставить комментарий
Phoenix
есть два компа. одни под freebsd, второй linux.была бд на freebsd.
сделал
#mysqldump --open DB > db.sql
внутри:
— MySQL dump 10.13
—
— Host: localhost Database: drupal_vipbook
— ------------------------------------------------------
— Server version 5.1.22-rc
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
—
— Table structure for table `vipbook_access`
—
DROP TABLE IF EXISTS `table1`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `table1` (
на linux
#mysql DB < db.sql
всё нормуль. в таблицах utf8
теперь когда делаю тоже самое в обратную сторону, имеем
— MySQL dump 10.11
—
— Host: mysql111207.hosting.ua Database: iigor_vipbook
— ------------------------------------------------------
— Server version 5.0.45-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
—
— Table structure for table `vipbook_access`
—
DROP TABLE IF EXISTS `table1`;
CREATE TABLE `table1` (
в некоторых таблицах utf8, в некоторых нет, почему - не знаю.
что нужно указать в линукс, чтобы добиться появления строчек для каждой таблицы(их около 100, поэтому руками - нехорошо)
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
?