Задавайте вопросы, мы ответим
Вы не зашли.
Добры день
в БД имеется таблица
CREATE TABLE IF NOT EXISTS `entity_description` ( `d_id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, `e_id` INT UNSIGNED NOT NULL, `name` VARCHAR(30) NOT NULL, `pozition` INT UNSIGNED NOT NULL DEFAULT 0, `visible` BOOLEAN DEFAULT TRUE ) ENGINE = InnoDB CHARACTER SET cp1251;
Кодировка и сравнени е БД
DEFAULT CHARACTER SET cp1251 DEFAULT COLLATE cp1251_general_ci;
При добавлении данных на Английском языке все работает нормально, но как только пытаяь вставить что-то вроде -
INSERT INTO `entity_description` VALUES ( null, 1, 'Новости', 0, 1 );
получаю ответ Data too long for column 'name' at row 1
хотя поле `name` VARCHAR(30) NOT NULL
в чём проблема? заранее благодарен.
Неактивен
С точки зрения базы, Вы сделали все правильно. Скорее всего,
Вы присылаете данные не в той кодировке, которую ожидает сервер.
Например, если Вы пытаетесь сохранить utf8-данные в строке (которые
занимают для русских букв в два раза больше места), а сервер не знает,
что данные именно в utf8, то он не сделает преобразование кодировок,
а, следовательно, более длинные данные не поместятся.
Со словом "новости", однако, мне не удалось получить такую ошибку.
Она у Вас возникает именно на этом слове?
Неактивен
Со словом "новости", однако, мне не удалось получить такую ошибку.
Она у Вас возникает именно на этом слове?
она возникает даже в том случае, если я хотя бы одну русскую букву пытаюсь добавить в поле name..
До того как создать тему не проверял данный запрос в Comman Client Line MySql, сейчас проверил - там всё работает!
Использую связку php + MySql вот тут- то не работает...
если удалить CHARACTER SET cp1251 - всё хорошо работает...но эт не то... в БД вместо русского - иероглифы.
Неактивен
Попробуйте написать какой-нибудь простейший сценарий на PHP, чтобы отследить
ошибку. Что-то такого типа:
<?php header ("Content-type: text/plain"); mysql_connect(); print ("Connect: " . mysql_error() . "\n"); mysql_select_db("dbname"); print ("SelectDB: " . mysql_error() . "\n"); mysql_query ("SET NAMES cp1251"); print ("Set names: " . mysql_error() . "\n"); mysql_query("INSERT INTO `entity_description` VALUES ( null, 1, 'Новости', 0, 1 )"); print ("Insert: " . mysql_error() . "\n"); ?>
Неактивен
Проблема разрешилась
добавление
<?php ... @mysql_query("SET NAMES 'cp1251'"); ?>
paulus спасибо.
Отредактированно Knight (14.06.2007 22:45:58)
Неактивен