Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ошибка при вводе данных в TEXT и BLOB

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: выдает сообщение дата то LONG
bavv
Отправлено: 28 Апреля, 2007 - 10:57:24
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2007  
Откуда: KIEV


Помог: 0 раз(а)




Как я понимаю проблема тоже в конфгурации MySQL.
При вводе данных в столбец с типом TEXT, LONGTEXT или BLOB, LONGBLOB.
выдает ошибку "data too long 1406".

На самом деле вес информации которую я вношу не превышает 30К.
При чем раньше в эту же таблицу, я восил данные и большего объема.
Просто вдруг с определенной записи начинает выдавать таукю ошибку.

То же самое возникает с абсолютно разными таблицами и базами.

MySQL установлен локально. Я использую InnoDB.

В мануале есть рекомендация увеличить параметр max_allowed_packed на стророне клиента и сервера.
Я пробывал - ничего не дало.

Посоветуйте, что-нибудь по теме, пожалуйста.

 
 Top
valenok
Отправлено: 28 Апреля, 2007 - 11:18:51
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




эта проблема возникает когда вставляешь utf8 данные
Укажите после подключения
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.    mysql_query ("set character_set_client='cp1251'");  
  4.    mysql_query ("set character_set_results='cp1251'");  
  5.    mysql_query ("set collation_connection='cp1251_general_ci'");  
  6.  ?>  



Из-за неверно выставленной кодировки в базу записываются данные в виде html сущностей (по моему). Соответственно каждый символ съедает не один байт, а шесть (кажется). Что-то вроде ( &#039; ).

Правильное решение только одно - настроить кодировку БД.
Из него вытекает:
1) При соединении с БД устанавливать корректный SET NAMES.
2) Использовать Юникод
3) Настроить на кирилицу конфигурационный файл MySQL - my.ini.


-----
Truly yours, Sasha.
 
My status
 Top
bavv
Отправлено: 28 Апреля, 2007 - 11:34:29
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2007  
Откуда: KIEV


Помог: 0 раз(а)




valenok пишет:
эта проблема возникает когда вставляешь utf8 данные
Укажите после подключения
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.    mysql_query ("set character_set_client='cp1251'");  
  4.    mysql_query ("set character_set_results='cp1251'");  
  5.    mysql_query ("set collation_connection='cp1251_general_ci'");  
  6.  ?>  



Из-за неверно выставленной кодировки в базу записываются данные в виде html сущностей (по моему). Соответственно каждый символ съедает не один байт, а шесть (кажется). Что-то вроде ( &#039; ).

Правильное решение только одно - настроить кодировку БД.
Из него вытекает:
1) При соединении с БД устанавливать корректный SET NAMES.
2) Использовать Юникод
3) Настроить на кирилицу конфигурационный файл MySQL - my.ini.


У меня по умолчанию стоит кодировка cp1251.
К тому же я вношу в базу чистый тект вырезанный из блокнота посредством командной строки.
 
 Top
valenok
Отправлено: 28 Апреля, 2007 - 11:48:44
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




PHP:
скопировать код в буфер обмена
  1.  <?PHP  
  2.     mysql_query ("SET NAMES `cp1251`");  
  3.     mysql_query ("set character_set_client='cp1251'");  
  4.     mysql_query ("set character_set_results='cp1251'");  
  5.     mysql_query ("set collation_connection='cp1251_general_ci'");  
  6.   ?>


Эта проблема существует только в mysql 5
Смена кодировки БД, таблицы и т.д. не помогает.
Англ. яз прекрасно вставляется.

http://ru.php.net/mysql/
"Замечание: Если вам требуется поддержка кодировок (отличных от latin, установленной по умолчанию), вам придётся установить внешнюю библиотеку, скомпилированную с их поддержкой."

Не смотря на то, все советуют ставить
mysql_query ("SET NAMES `cp1251`");
и я в том числе.


-----
Truly yours, Sasha.
 
My status
 Top
bavv
Отправлено: 28 Апреля, 2007 - 11:54:06
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2007  
Откуда: KIEV


Помог: 0 раз(а)




valenok пишет:
PHP:
скопировать код в буфер обмена
  1.  <?PHP  
  2.     mysql_query ("SET NAMES `cp1251`");  
  3.     mysql_query ("set character_set_client='cp1251'");  
  4.     mysql_query ("set character_set_results='cp1251'");  
  5.     mysql_query ("set collation_connection='cp1251_general_ci'");  
  6.   ?>


Эта проблема существует только в mysql 5
Смена кодировки БД, таблицы и т.д. не помогает.
Англ. яз прекрасно вставляется.



http://ru.php.net/mysql/
"Замечание: Если вам требуется поддержка кодировок (отличных от latin, установленной по умолчанию), вам придётся установить внешнюю библиотеку, скомпилированную с их поддержкой."

Не смотря на то, все советуют ставить
mysql_query ("SET NAMES `cp1251`");
и я в том числе.


ок. хорошо.
Но если мне нужно внести данные с командной строки?

к тому же у меня MySQL 4.0
И почему раньше данные свободно вносились?
 
 Top
valenok
Отправлено: 28 Апреля, 2007 - 11:55:39
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Наверное раньше никто не трогал my.ini =]
С командной строки просто добавьте до самого ввода следующее:
SET NAMES `cp1251`;


-----
Truly yours, Sasha.
 
My status
 Top
bavv
Отправлено: 28 Апреля, 2007 - 11:57:55
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2007  
Откуда: KIEV


Помог: 0 раз(а)




valenok пишет:
Наверное раньше никто не трогал my.ini =]
С командной строки просто добавьте до самого ввода следующее:
SET NAMES `cp1251`;


только что попробывал.
не помогает
все равно ош. 1406 'data too long';
вставил тескт на 10 предложений.
 
 Top
valenok
Отправлено: 28 Апреля, 2007 - 11:59:38
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




попробуйте всё таки убрать игнорирование пользовательской кодировки в my.ini


-----
Truly yours, Sasha.
 
My status
 Top
bavv
Отправлено: 28 Апреля, 2007 - 12:00:20
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2007  
Откуда: KIEV


Помог: 0 раз(а)




valenok пишет:
попробуйте всё таки убрать игнорирование пользовательской кодировки в my.ini


уже убрал.
 
 Top
evgenijj
Отправлено: 28 Апреля, 2007 - 12:00:25
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




valenok пишет:
Наверное раньше никто не трогал my.ini

Трогал я my.ini. Убил на это целый день. Перерыл кучу информации в Интернете. Под Windows XP так и не смог избавиться от '?????' без использования запроса SET NAMES `cp1251`. По поводу FreeBSD/Linux - не знаю. Говорят, там эта проблема легко решается именно редактированием my.ini.
 
 Top
valenok
Отправлено: 28 Апреля, 2007 - 12:04:23
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




bavv
Какая у вас операционная система ?
Можно ваш код ? Точнее то что вы запускаете в командной строке.

--

Я посмотрел, через скрипты подход смены кодировки работает.

А из командной строки идёт
MYSQL Character set cp1251 is not a compiled Character set and is not specified in the "C:\mysql\\share\charsets\index.xml" file

MYSQL Набор символов cp1251 не является скомпилированным Набором символов и не определен в файле "C:\mysql\\share\charsets\index.xml"

--

Проблема заключается в том, что MySQL ищет файл набора символов по вшитому в исполняемый файл пути C:\mysql. Необходимо настроить my.ini на точный путь до файла с набором символов. Задаётся он директивой - character-sets-dir. Вписывается данная директива в разделы [client] и [mysqld] конфигурационного файла.

В моём случае директива выглядит следующим образом:
character-sets-dir="С:/Program Files/Programming/MySQL Server 5.0/share/charsets"

Делай по аналогии.
После изменений не забудь перезапустить MySQL сервис.


-----
Truly yours, Sasha.
 
My status
 Top
bavv
Отправлено: 28 Апреля, 2007 - 12:49:04
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2007  
Откуда: KIEV


Помог: 0 раз(а)




valenok пишет:
bavv
Какая у вас операционная система ?
Можно ваш код ? Точнее то что вы запускаете в командной строке.

--

Я посмотрел, через скрипты подход смены кодировки работает.

А из командной строки идёт
MYSQL Character set cp1251 is not a compiled Character set and is not specified in the "C:mysql\sharecharsetsindex.xml" file

MYSQL Набор символов cp1251 не является скомпилированным Набором символов и не определен в файле "C:mysql\sharecharsetsindex.xml"

--

Проблема заключается в том, что MySQL ищет файл набора символов по вшитому в исполняемый файл пути C:mysql. Необходимо настроить my.ini на точный путь до файла с набором символов. Задаётся он директивой - character-sets-dir. Вписывается данная директива в разделы [client] и [mysqld] конфигурационного файла.

В моём случае директива выглядит следующим образом:
character-sets-dir="С:/Program Files/Programming/MySQL Server 5.0/share/charsets"

Делай по аналогии.
После изменений не забудь перезапустить MySQL сервис.


ОС: XP Pro
Код:

MYSQL>SET NAMES `cp1251`;
MYSQL>SET character_set_client='cp1251';
MYSQL>SET character_set_results='cp1251';
MYSQL>SET collation_connection='cp1251_general_ci';
MYSQL>INSERT INTO furniture (info1)
VALUES ('Winkhaus AutoPilot має свій неповторний ступінь надійності завдяки продуманій конструкції, яка робить можливим системне з'єднання частин фурнітури з силовим і геометричним замиканням. Підвержені особливим навантаженням частини, такі як грибкові болти і защіпки, виконані із міцної сталі.Нова геометрична силовая форма блокування штифту петлі оптимально перешкоджає випаданню штифту. Нове покоління кронштейнів і петель допускає вагу стулки до 130 кг. Конструкція периметрального з'єднання оптимально розподіляє навантаження на частини фурнітури, схильні найбільшому навантаженню. Таким чином виникає оптимальний розподіл навантаження на елементи кріплення, яке гарантує довгострокову надійну роботу.
Winkhaus AutoPilot - система елементів, що дозволяє задовольнити індивідуальні вимоги безпеки різного степеня складності');

В итоге выдоет ошибку о которой я говорил.
 
 Top
valenok
Отправлено: 28 Апреля, 2007 - 13:46:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




У тебя не русский, поэтому кодировка cp1251 тебе н подойдёт.
Я не помню какая для украинского, хотя можно пробовать работать с utf8\n\n(Добавление)
MYSQL>SET NAMES `utf8`;
MYSQL>SET character_set_client='utf8';
MYSQL>SET character_set_results='utf8';
MYSQL>SET collation_connection='latin1_swedish_ci';


-----
Truly yours, Sasha.
 
My status
 Top
bavv
Отправлено: 28 Апреля, 2007 - 13:59:04
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Февр. 2007  
Откуда: KIEV


Помог: 0 раз(а)




кроме того если я вставляю половину с этого текста - все нормально
 
 Top
-SCHATTEN-
Отправлено: 29 Апреля, 2007 - 11:46:22
Post Id



Пользователь


Покинул форум
Сообщений всего: 615
Дата рег-ции: Июль 2006  
Откуда: Оттуда !


Помог: 0 раз(а)




Поэтому и работает нормально с половиной текста, что в неверной одировке текст искажается...
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB