SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.06.2007 13:08:15

Knight
Участник
Зарегистрирован: 14.06.2007
Сообщений: 4

Data too long for column

Добры день
в БД имеется таблица

Код:

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

в чём проблема? заранее благодарен.

Неактивен

 

#2 14.06.2007 13:35:03

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6732

Re: Data too long for column

С точки зрения базы, Вы сделали все правильно. Скорее всего,
Вы присылаете данные не в той кодировке, которую ожидает сервер.

Например, если Вы пытаетесь сохранить utf8-данные в строке (которые
занимают для русских букв в два раза больше места), а сервер не знает,
что данные именно в utf8, то он не сделает преобразование кодировок,
а, следовательно, более длинные данные не поместятся.

Со словом "новости", однако, мне не удалось получить такую ошибку.
Она у Вас возникает именно на этом слове?

Неактивен

 

#3 14.06.2007 15:54:27

Knight
Участник
Зарегистрирован: 14.06.2007
Сообщений: 4

Re: Data too long for column

Со словом "новости", однако, мне не удалось получить такую ошибку.
Она у Вас возникает именно на этом слове?

она возникает даже в том случае, если я хотя бы одну русскую букву пытаюсь добавить в поле name..

До того как создать тему не проверял данный запрос в Comman Client Line MySql, сейчас проверил  - там всё работает!

Использую связку php + MySql  вот тут- то не работает...

если удалить CHARACTER SET cp1251 - всё хорошо работает...но эт не то... в БД вместо русского - иероглифы.

Неактивен

 

#4 14.06.2007 19:39:33

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6732

Re: Data too long for column

Попробуйте написать какой-нибудь простейший сценарий на 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");
?>

Неактивен

 

#5 14.06.2007 22:44:56

Knight
Участник
Зарегистрирован: 14.06.2007
Сообщений: 4

Re: Data too long for column

Проблема разрешилась

добавление

Код:

<?php
...
@mysql_query("SET NAMES 'cp1251'");
?>

paulus спасибо.

Отредактированно Knight (14.06.2007 22:45:58)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson