1

Тема: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Уважаемые форумчане, ОЧЕНЬ СРОЧНО НУЖНА ВАША ПОМОЩЬ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
При добавлении данных в таблицу выдает ошибку (#1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In)
Как ее решить????
вот таблица:
Поле                        Тип                      Ноль                По умолчанию              Допольнительно
id                              int(4)                          Да                                NULL                       auto_increment
title                           varchar(255)               Да                                NULL
description                 text                            Да                                NULL
text                           text                            Да                                NULL
date                          date                           Да                                000-00-00
author                       varchar(255)               Да                                NULL 

а вот запрос на добавление инфи:

mysql_query("INSERT INTO news (title,description,text,date,author) VALUE ('$title','$description','$text','$date','$author')");

2

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

aler
В таблице уберите у поля id значение по умолчанию. В поле "Ноль" должно быть "нет", в поле "По умолчанию" - тоже "нет". Так же поле id должно быть первичным ключом (проверьте индекс).

3 (изменено: aler, 2009-12-14 10:00:09)

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Hanut сказал:

aler
В таблице уберите у поля id значение по умолчанию. В поле "Ноль" должно быть "нет", в поле "По умолчанию" - тоже "нет". Так же поле id должно быть первичным ключом (проверьте индекс).

я сам над этим думал. НО! при создании таблицы я все значения ставлю NOT NULL  и в самой структуре таблицы после создания тоже стоят эти значения. А после того как просматриваешь свойства таблици все значения становятся в NULL. Сколько раз не пробовал поменять все равно тоже самое.
id у меня является первичным ключом. Может это глюк самого phpmyadmina или mysql?
И еще, когда вручную указываешь id все данные занюсятся в таблицу.

4

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

aler
Попробуйте найти конфигурационный файл MySQL (my.ini./my.cnf) и поправить в нем строку (если она выглядит иначе):
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

5

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Hanut сказал:

aler
Попробуйте найти конфигурационный файл MySQL (my.ini./my.cnf) и поправить в нем строку (если она выглядит иначе):
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

в своем MySQL нашел файл my.cnf но там вообще такой строки нету.
Кстате auto_increment начинает работать когда добавишь пару записей вручную с указанием id. После этого спокойно добавляет с формы.
Ничего не могу понять........

6

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Попробуйте добавить эту строку в my.cnf, в раздел [mysqld].

Не должно быть, чтобы без выставления NULL оно добавлялось автоматически.

7

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Hanut сказал:

Попробуйте добавить эту строку в my.cnf, в раздел [mysqld].

Не должно быть, чтобы без выставления NULL оно добавлялось автоматически.

Вставил эту строчку куда вы сказали. Никаких изменений.


И еще один вопросик: Какую кодировку использовать  когда добавляешь данные на русском или украинском языке? а то в базе отображаются знаки вопроса (?????)

8

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

aler
Кодировка в БД зависит от кодировки страниц сайта: если сайт в windows-1251, то таблицы должны иметь сравнение cp1251_general_ci; если в utf-8, то utf8_general_ci.

Если вы сами пишите скрипт вставки данных, то обязательно сразу после функции mysql_connect добавьте строку определяющую кодировку соединения с MySQL:

mysql_query('SET NAMES cp1251'); // utf8 - для страниц в кодировке utf-8.

9

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Hanut сказал:

aler
Кодировка в БД зависит от кодировки страниц сайта: если сайт в windows-1251, то таблицы должны иметь сравнение cp1251_general_ci; если в utf-8, то utf8_general_ci.

Если вы сами пишите скрипт вставки данных, то обязательно сразу после функции mysql_connect добавьте строку определяющую кодировку соединения с MySQL:

mysql_query('SET NAMES cp1251'); // utf8 - для страниц в кодировке utf-8.

Большое спасибо. вот это мне и нужно было.

10

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Все равно ничего не пойму, почему id не ставится автоматически... и как не крутил NULL ставится само по себе.

11

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

aler
Скопируйте сюда структуру таблицы. Пока у меня нет идей почему так получается.

12

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Hanut сказал:

aler
Скопируйте сюда структуру таблицы. Пока у меня нет идей почему так получается.

Поле           Тип               Сравнение       Атрибуты      Ноль      По умолчанию      Дополнительно
id                int(4)                                                       Да          NULL                    auto_increment
login            varchar(20)                                              Да          NULL
password     varchar(20)                                              Да          NULL


вот такая структура.

13

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

aler
Я имел в виду структуру в виде SQL запроса. Увидеть ее можно если выбрать таблицу, затем перейти на страницу экспорта, там убрать галочку в блоке данных и не выставлять галочку сохранения в файл. Тогда структура будет выведена прямо в phpMyAdmin.

14

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

alex252003
Строка
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
Будет в дампе всегда, это необходимо для корректной вставки значений в поле имеющее параметр автоувеличения (AUTO_INCREMENT).

Влияет режим NO_AUTO_VALUE_ON_ZERO только на те значения, которые для поля id будут нулем. Если в дампе есть такие значения, значит будет выводиться ошибка.

В крайнем случае, можете перед импортом дампа закомментировать строку таким образом:
-- SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

15

Re: #1366 - Incorrect integer value: '' for column 'id' at row 1#1366 - In

Hanut сказал:

alex252003
Строка
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
Будет в дампе всегда, это необходимо для корректной вставки значений в поле имеющее параметр автоувеличения (AUTO_INCREMENT).

Влияет режим NO_AUTO_VALUE_ON_ZERO только на те значения, которые для поля id будут нулем. Если в дампе есть такие значения, значит будет выводиться ошибка.

В крайнем случае, можете перед импортом дампа закомментировать строку таким образом:
-- SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

спасибо уже разобрался, окзалось дело в кодировке, я поставил в файле my.ini кодировку:
default-character-set=cp1251
и в таблице поставил сравнение cp1251_general_ci
и все заработало

зы я свое сообщение удалил а потом только увидел что вы уже ответили smile