hi every one i have a problem in mysql
my table is
CREATE TABLE IF NOT EXISTS `contactform` (
`contact_id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(50) NOT NULL,
`addition` varchar(50) NOT NULL,
`surname` varchar(50) NOT NULL,
`Address` varchar(200) NOT NULL,
`postalcode` varchar(20) NOT NULL,
`city` varchar(50) NOT NULL,
`phone` varchar(20) NOT NULL,
`emailaddress` varchar(30) NOT NULL,
`dob` varchar(50) NOT NULL,
`howtoknow` varchar(50) NOT NULL,
`othersource` varchar(50) NOT NULL,
`orientationsession` varchar(20) NOT NULL,
`othersession` varchar(20) NOT NULL,
`organisation` int(11) NOT NULL,
`newsletter` int(2) NOT NULL,
`iscomplete` int(11) NOT NULL,
`registrationdate` date NOT NULL,
PRIMARY KEY (`contact_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=39 ;
mysql>insert into contactform values('','abhi','sir','shukla','vbxcvb','342342','asdfasd','234234234','abhi@gmail.com','1999/5/16','via vrienden of familie','','19','20','6','1','1','2010-03-29')
i get following error.
#1366 — Incorrect integer value: » for column ‘contact_id’ at row 1
this query work fine on my local machine but give error on server
I’ve been trying to upload a CSV
table into my remote server database but I find an error. I use MySQL
in a RedHat Linux distrib. My mycsv.csv file looks like this:
aa,ProductDescription,country,potato,L,11/18/2013,N,05
bb,ProductDescription,country,tomato,L,12/31/9999,N,05
cc,ProductDescription,country,curry,M,01/01/2014,Y,05
dd,ProductDescription,country,spicy,V,05/01/2015,N,
As you may see, last line ends with comma «,» without having any field (it is empty and should be like this or even better if I can change it to NULL). However when I type the following query:
LOAD DATA INFILE "/home/mycsv.txt"
INTO TABLE inbound.master_data
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY 'rn';
I get the following error in the command line
Error Code: 1366. Incorrect integer value: » for column
‘product_life_cycle’ at row 4
Does anybody know how to set a null value after the comma in the last line?
(I think this is the problem why I can’t upload my table). Thank you very much in advance.
The table definition:
CREATE TABLE master_data
( aa varchar(6) NOT NULL,
bb varchar(50) NOT NULL,
cc varchar(3) NOT NULL,
dd varchar(2) NOT NULL,
ee varchar(1) DEFAULT NULL,
ff varchar(20) NOT NULL,
gg varchar(1) NOT NULL,
hh int(11) DEFAULT NULL,
PRIMARY KEY (aa),
UNIQUE KEY aa_UNIQUE (aa)
) ENGINE=InnoDB
DEFAULT CHARSET=latin1 ;
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
1 2009-12-14 00:26:28
- aler
- Редкий гость
- Неактивен
- Зарегистрирован: 2009-12-13
- Сообщений: 7
Тема: #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 Ответ от Hanut 2009-12-14 00:51:26
- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
aler
В таблице уберите у поля id значение по умолчанию. В поле «Ноль» должно быть «нет», в поле «По умолчанию» — тоже «нет». Так же поле id должно быть первичным ключом (проверьте индекс).
3 Ответ от aler 2009-12-14 09:57:04 (изменено: aler, 2009-12-14 10:00:09)
- aler
- Редкий гость
- Неактивен
- Зарегистрирован: 2009-12-13
- Сообщений: 7
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 Ответ от Hanut 2009-12-14 12:14:01
- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
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 Ответ от aler 2009-12-14 14:51:45
- aler
- Редкий гость
- Неактивен
- Зарегистрирован: 2009-12-13
- Сообщений: 7
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 Ответ от Hanut 2009-12-14 22:31:13
- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
Попробуйте добавить эту строку в my.cnf, в раздел [mysqld].
Не должно быть, чтобы без выставления NULL оно добавлялось автоматически.
7 Ответ от aler 2009-12-15 01:44:41
- aler
- Редкий гость
- Неактивен
- Зарегистрирован: 2009-12-13
- Сообщений: 7
Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
Hanut сказал:
Попробуйте добавить эту строку в my.cnf, в раздел [mysqld].
Не должно быть, чтобы без выставления NULL оно добавлялось автоматически.
Вставил эту строчку куда вы сказали. Никаких изменений.
И еще один вопросик: Какую кодировку использовать когда добавляешь данные на русском или украинском языке? а то в базе отображаются знаки вопроса (?????)
8 Ответ от Hanut 2009-12-15 13:13:45
- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
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 Ответ от aler 2009-12-15 14:18:28
- aler
- Редкий гость
- Неактивен
- Зарегистрирован: 2009-12-13
- Сообщений: 7
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 Ответ от aler 2009-12-21 22:12:58
- aler
- Редкий гость
- Неактивен
- Зарегистрирован: 2009-12-13
- Сообщений: 7
Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
Все равно ничего не пойму, почему id не ставится автоматически… и как не крутил NULL ставится само по себе.
11 Ответ от Hanut 2009-12-22 00:10:45
- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
aler
Скопируйте сюда структуру таблицы. Пока у меня нет идей почему так получается.
12 Ответ от aler 2009-12-22 00:15:15
- aler
- Редкий гость
- Неактивен
- Зарегистрирован: 2009-12-13
- Сообщений: 7
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 Ответ от Hanut 2009-12-22 12:07:00
- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
Re: #1366 — Incorrect integer value: » for column ‘id’ at row 1#1366 — In
aler
Я имел в виду структуру в виде SQL запроса. Увидеть ее можно если выбрать таблицу, затем перейти на страницу экспорта, там убрать галочку в блоке данных и не выставлять галочку сохранения в файл. Тогда структура будет выведена прямо в phpMyAdmin.
14 Ответ от Hanut 2010-05-20 11:56:07
- Hanut
- Модератор
- Неактивен
- Откуда: Рига, Латвия
- Зарегистрирован: 2006-07-02
- Сообщений: 9,726
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 Ответ от alex252003 2010-05-20 12:08:13
- alex252003
- Редкий гость
- Неактивен
- Зарегистрирован: 2010-05-20
- Сообщений: 2
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
и все заработало
зы я свое сообщение удалил а потом только увидел что вы уже ответили
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Problem:
MySQL throw the following error message on insert or update statement executed
ERROR 1366 (HY000): Incorrect integer value: » for column ‘id’ at row 1 |
Why?
Try to update string value into integer column, and strict sql mode is enabled.
Mainly occurred on MySQL 5.x or above.
How to Fix:
1. Disable strict sql mode
Update /etc/my.cnf , and remove STRICT_TRANS_TABLES from sql-mode
#sql—mode=«STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION» to sql—mode=«NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION» |
References:
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables
I’m upgrading Piwik from 2.17.1 to 3.2.1. It’s using PHP 5.6.29 and MySQL 5.7.18.
During the upgrade, it failed when it ran the following query:
ALTER TABLE `piwik_log_visit` MODIFY COLUMN `visit_goal_buyer` TINYINT(1) NULL, MODIFY COLUMN `visit_goal_converted` TINYINT(1) NULL, MODIFY COLUMN `visitor_days_since_first` SMALLINT(5) UNSIGNED NULL, MODIFY COLUMN `visitor_days_since_order` SMALLINT(5) UNSIGNED NULL, MODIFY COLUMN `visitor_returning` TINYINT(1) NULL, MODIFY COLUMN `visitor_count_visits` INT(11) UNSIGNED NOT NULL, MODIFY COLUMN `visit_entry_idaction_name` INTEGER(10) UNSIGNED NULL, MODIFY COLUMN `visit_exit_idaction_name` INTEGER(10) UNSIGNED NULL, MODIFY COLUMN `visit_exit_idaction_url` INTEGER(10) UNSIGNED NULL DEFAULT 0, MODIFY COLUMN `visit_total_actions` INT(11) UNSIGNED NULL, ADD COLUMN `visit_total_interactions` SMALLINT UNSIGNED DEFAULT 0, MODIFY COLUMN `visit_total_searches` SMALLINT(5) UNSIGNED NULL, MODIFY COLUMN `referer_url` TEXT NULL, MODIFY COLUMN `location_browser_lang` VARCHAR(20) NULL, MODIFY COLUMN `config_browser_engine` VARCHAR(10) NULL, MODIFY COLUMN `config_browser_name` VARCHAR(10) NULL, MODIFY COLUMN `config_browser_version` VARCHAR(20) NULL, MODIFY COLUMN `config_device_brand` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, MODIFY COLUMN `config_device_model` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, MODIFY COLUMN `config_device_type` TINYINT( 100 ) NULL DEFAULT NULL, MODIFY COLUMN `config_os` CHAR(3) NULL, MODIFY COLUMN `visit_total_events` INT(11) UNSIGNED NULL, MODIFY COLUMN `visitor_localtime` TIME NULL, MODIFY COLUMN `visitor_days_since_last` SMALLINT(5) UNSIGNED NULL, MODIFY COLUMN `config_resolution` VARCHAR(18) NULL, MODIFY COLUMN `config_cookie` TINYINT(1) NULL, MODIFY COLUMN `config_director` TINYINT(1) NULL, MODIFY COLUMN `config_flash` TINYINT(1) NULL, MODIFY COLUMN `config_gears` TINYINT(1) NULL, MODIFY COLUMN `config_java` TINYINT(1) NULL, MODIFY COLUMN `config_pdf` TINYINT(1) NULL, MODIFY COLUMN `config_quicktime` TINYINT(1) NULL, MODIFY COLUMN `config_realplayer` TINYINT(1) NULL, MODIFY COLUMN `config_silverlight` TINYINT(1) NULL, MODIFY COLUMN `config_windowsmedia` TINYINT(1) NULL, MODIFY COLUMN `visit_total_time` INT(11) UNSIGNED NOT NULL, MODIFY COLUMN `location_country` CHAR(3) NULL, MODIFY COLUMN `location_latitude` decimal(9, 6) DEFAULT NULL, MODIFY COLUMN `location_longitude` decimal(9, 6) DEFAULT NULL;
The error is:
ERROR 1366 (HY000): Incorrect integer value: '' for column 'config_device_type' at row 6963868
This is apparently because there are many rows in this column with empty-string values. I don’t know whether it’s safe/correct to convert the empty-string values to null before re-running this query.