Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Data too long for column 'name' at row 1 -- ПОмогите!!!!
 
 автор: One art galery   (26.11.2006 в 03:44)   письмо автору
 
 

+------------------+
| Tables_in_knopki |
+------------------+
| q |
| q2 |
| spisok |
| spisok2 |
+------------------+
4 rows in set (0.01 sec)

mysql> insert into q2 VALUES ('гЫГЫГЫ');
ERROR 1406 (22001): Data too long for column 'name' at row 1

как исправить???( в таблице поле текст в формате TINYTEXT)

   
 
 автор: targa   (26.11.2006 в 04:38)   письмо автору
 
   для: One art galery   (26.11.2006 в 03:44)
 

Ну такую ошибку обычно получаешь, когда пытаешься запихнуть длинные данные в короткое поле.
Но мне кажется у Вас ошибка в синтаксисе.
Можно написать так:
INSERT INTO your_table_name (q2) VALUES ('гЫГЫГЫ');

или так:
INSERT INTO your_table_name SET q2='гЫГЫГЫ';


Мне больше нравится первій вариант. Т.к. редко в таблицу заносится одно поле, как правило несколько сразу, то такой вариант написания удобнее.

   
 
 автор: cheops   (26.11.2006 в 12:08)   письмо автору
 
   для: One art galery   (26.11.2006 в 03:44)
 

Проверьте конфигурационный файл my.ini, директива default-character-set должна быть только в секции [mysqld], её не должно быть в секции [mysql].

   
 
 автор: One art galery   (26.11.2006 в 14:01)   письмо автору
 
   для: cheops   (26.11.2006 в 12:08)
 

Server version: 5.1.12-beta-community-nt MySQL Community Server (GPL)

+------------------+
| Tables_in_knopki |
+------------------+
| q |
| q2 |
| spisok |
| spisok2 |
+------------------+
4 rows in set (0.68 sec)

mysql> describe q2;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| name | tinytext | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
1 row in set (1.32 sec)

mysql> insert into q2 (name) VALUES ('гыгыгы');
ERROR 1406 (22001): Data too long for column 'name' at row 1


Та же проблема...заодно прикрепляю my.ini

   
 
 автор: One art galery   (26.11.2006 в 16:15)   письмо автору
 
   для: One art galery   (26.11.2006 в 14:01)
 

Неужели не кто не может помочь???

   
 
 автор: AlexelA   (26.11.2006 в 16:26)   письмо автору
 
   для: One art galery   (26.11.2006 в 16:15)
 

Не уверен, но возможно поможет выполнение этих двух
запросов, перед запросами добавления и выборки данных

$query1 = "SET CHARACTER SET cp1251;";
$query2 = "SET NAMES 'cp1251'";

Также попробуйте изменить my.ini
Ваш измененный файл прилагается.

   
 
 автор: One art galery   (26.11.2006 в 17:04)   письмо автору
 
   для: AlexelA   (26.11.2006 в 16:26)
 

Че за на(извиняюсь но других слов нету)
либо я чтото не понел . либо глюки с MySQL


Server version: 5.1.12-beta-community-nt MySQL Community Server (GPL)

mysql> use knopki;
Database changed
mysql> $query1 = "SET CHARACTER SET cp1251;";
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '$quer
y1 = "SET CHARACTER SET cp1251;"' at line 1
mysql> $query2 = "SET NAMES 'cp1251'";1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '$quer
y2 = "SET NAMES 'cp1251'"' at line 1
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '1' at
line 1
mysql> insert into q2 (name) VALUES ('гыгы');
ERROR 1406 (22001): Data too long for column 'name' at row 1
mysql>

   
 
 автор: AlexelA   (26.11.2006 в 17:29)   письмо автору
 
   для: One art galery   (26.11.2006 в 17:04)
 

Не надо возмущаться.
Просто вы дословно ввели то, что вам написали.
Попробуем по-другому, введите все, кроме угловых скобок:
<SET NAMES CP1251>
<SET CHARACTER SET CP1251>
Результат выполнения каждой из этих команд:
<Query OK.>
После успешного выполнения данных комадн, вводите свой запрос.

   
 
 автор: One art galery   (26.11.2006 в 18:13)   письмо автору
 
   для: AlexelA   (26.11.2006 в 17:29)
 

ЭВРИКА(но не совсем)
наконецто добавились данные!!!
но вот беда есть скрипт выводящий из базы данных!
и как раз то что получилось ввести выводиться как вопросики(??????)
прикрепляю файл который выводит из бд!

   
 
 автор: AlexelA   (26.11.2006 в 18:22)   письмо автору
 
   для: One art galery   (26.11.2006 в 18:13)
 

Вы снова меня не поняли. Я же написал, "без угловых скобок"
Вводите так:
SET NAMES CP1251
SET CHARACTER SET CP1251

   
 
 автор: One art galery   (26.11.2006 в 18:28)   письмо автору
 
   для: AlexelA   (26.11.2006 в 18:22)
 

дада...до меня потом дошло что я кривой косой и не умею читать....но всетаки с третьего раза понел...так что делать с проблемой в посте выше???

   
 
 автор: One art galery   (26.11.2006 в 19:01)   письмо автору
 
   для: One art galery   (26.11.2006 в 18:28)
 

ой еще фигня... сделал select * from q2;
и там где русский текст в бд тоже "??????"
блин кто содовал mysql совсем опустили этот момент...ОТСТОЙ

   
 
 автор: _Dreamer_   (26.11.2006 в 19:10)   письмо автору
 
   для: One art galery   (26.11.2006 в 19:01)
 

неправда! мускул РУЛЕЗЗЗ )))

   
 
 автор: One art galery   (26.11.2006 в 19:13)   письмо автору
 
   для: _Dreamer_   (26.11.2006 в 19:10)
 

а чешь она не работает как надо???
(хотя и не спорю что у меня пальцы кривые...но с другой стороны покажите у кого они прямые???)

   
 
 автор: AlexelA   (26.11.2006 в 19:51)   письмо автору
 
   для: One art galery   (26.11.2006 в 19:13)
 

Попробуйте перед запросом вывода ввести все ту же команду
SET NAMES CP1251
Что у вас получается?

   
 
 автор: One art galery   (26.11.2006 в 19:59)   письмо автору
 
   для: AlexelA   (26.11.2006 в 19:51)
 

я же прикреплял код вывода...там как раз перед выводом есть строчка:
mysql_query("SET NAMES 'cp1251'");

но не че не помогает!!!

   
 
 автор: AlexelA   (26.11.2006 в 20:20)   письмо автору
 
   для: One art galery   (26.11.2006 в 19:59)
 

Какая кодировка таблицы БД, из которой вы выводите данные?

   
 
 автор: One art galery   (26.11.2006 в 21:11)   письмо автору
 
   для: AlexelA   (26.11.2006 в 20:20)
 

ууу...сложный вопрос...а как посмотреть???

   
 
 автор: AlexelA   (27.11.2006 в 00:46)   письмо автору
 
   для: One art galery   (26.11.2006 в 21:11)
 

Легче всего будет воспользоваться любой визуальной
программой и посмотреть кодировку таблицы.
Например, можно воспользоваться скриптом phpmyadmin.
Если такой нет и лень качать, тогда забивайте запросы в командной строке.
После соединения и выбора необходимой БД введите команду:
show full column from <имя таблицы>;
После этого, сообщите, что содержится в поле "collation".

   
 
 автор: One art galery   (27.11.2006 в 16:05)   письмо автору
 
   для: AlexelA   (27.11.2006 в 00:46)
 

я наверно опять нифига не понел!!!

mysql> use knopki;
Database changed
mysql> show tables;
+------------------+
| Tables_in_knopki |
+------------------+
| q |
| q2 |
| spisok |
| spisok2 |
+------------------+
4 rows in set (0.00 sec)

mysql> show full column from q2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'colum
n from q2' at line 1
mysql> show full column from <q2>;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'colum
n from <q2>' at line 1
mysql> show full column from q2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'colum
n from q2' at line 1
mysql> show full column * from q2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'colum
n * from q2' at line 1
mysql> show full column from * q2;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'colum
n from * q2' at line 1
mysql>


БРЕД

   
 
 автор: AlexelA   (27.11.2006 в 18:16)   письмо автору
 
   для: One art galery   (27.11.2006 в 16:05)
 

Немного ошибся.
Попробуйте так:
show full columns from <имя БД>.<имя таблицы>;
Или, если БД уже выбрана, можно:
show full columns from <имя таблицы>;

   
 
 автор: One art galery   (27.11.2006 в 19:14)   письмо автору
 
   для: AlexelA   (27.11.2006 в 18:16)
 

mysql> show full columns from q4;
+-------+----------+-------------------+------+-----+---------+-------+---------
------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileg
es | Comment |
+-------+----------+-------------------+------+-----+---------+-------+---------
------------------------+---------+
| name | tinytext | cp1251_general_ci | NO | | | | select,i
nsert,update,references | |
+-------+----------+-------------------+------+-----+---------+-------+---------
------------------------+---------+
1 row in set (0.62 sec)

mysql>


Я вбиваю данные как вы показывали сначало set names потом set character....
в бд все данные как нужно в виде русского текста!!!
но когда вывожу например слово "папа" то на странице получаю вот такой код "Ї Ї" .. ну и совсем остальным кодом тоже самое!!!

вот код вывода:

<?php

       
include ('config.php');
  
$dbname "knopki";
if(!
mysql_query("SET NAMES 'cp1251'"))
{
echo 
mysqlerror();
}
else{ echo 
"ок<br>"; }
  if (!@
mysql_select_db($dbname$dbcnx))
  {
    exit( 
"<P>В настоящий момент база данных не доступна, поэтому
              корректное отображение страницы невозможно.</P>" 
);
  }

// выводим результат
  
$ath mysql_query("SELECT * FROM q4");
// Проверяем успешность выполнения SQL-запроса
  
if(!$ath) exit(mysql_erorr());
// Определяем таблицу и заголовок
// Так как запрос может возвращать 
// несколько строк, применяем цикл
  
while(list($name) = mysql_fetch_row($ath))
  {
    echo 
"$name - хыхыхы<br>";
  }
?>

   
 
 автор: AlexelA   (27.11.2006 в 21:19)   письмо автору
 
   для: One art galery   (27.11.2006 в 19:14)
 

Попробуйте выполнить данный запрос и сообщите результат:
SHOW VARIABLES LIKE `char%'

Заодно проверьте, стоит ли в php.ini:
default_charset = "cp1251"

   
 
 автор: MIchail1982   (28.11.2006 в 12:19)   письмо автору
 
   для: One art galery   (27.11.2006 в 19:14)
 

Это разные кодировки странички и данных из Мускула
я решил таким способом

<?php
//Это сам запрос 
$query "select * from $dbtable
where UID=
$id;";
//а тут ставим, в какой кодировке из  Мускула приходят данные
mysql_query("SET CHARSET cp1251");
?>

   
 
 автор: One art galery   (29.11.2006 в 16:20)   письмо автору
 
   для: MIchail1982   (28.11.2006 в 12:19)
 

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

   
 
 автор: Michail1982   (29.11.2006 в 16:46)   письмо автору
 
   для: One art galery   (29.11.2006 в 16:20)
 

При добавлении через phpMyAdmin данные преобразуются (как мне кажется :0) ) из той кодировки, в которой phpMyAdmin в ту, на которой БД , а при добавлении "командой в строке" неменяется

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования