SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 25.10.2011 15:25:56

SanyaGarik
Завсегдатай
Зарегистрирован: 25.10.2011
Сообщений: 26

конфиг для auto_increment

Добрый день. Есть запрос
insert into `news` ('id', 'value') values (' ', 's'), поле id- auto_increment, выдает ошибку, потому что запрос должен быть вида insert into `news` ('value') values ('s')  , но необходимо сделать так, чтоб работал первый вариант запроса, как этого можно добиться?

Неактивен

 

#2 25.10.2011 15:47:14

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: конфиг для auto_increment

Вы не в те апострофы оборачиваете.

не insert into `news` ('id', 'value'),
а  insert into `news` (`id`, `value`)

Что касается вставки с аттрибутом auto_increment, то можно
и так

insert into `news`(`value`) values('Здесь могла быть ваша реклама');

и так
insert into `news`(`id`,`value`) values(NULL, 'Здесь могла быть ваша реклама');


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 25.10.2011 15:56:21

SanyaGarik
Завсегдатай
Зарегистрирован: 25.10.2011
Сообщений: 26

Re: конфиг для auto_increment

а так чтобы вместо values(NULL, 'Здесь могла быть ваша реклама'); написать values('', 'Здесь могла быть ваша реклама'); Нужно именно в таком виде, точно известно, что так можно, но не знаю какие для этого настройки нужны

Неактивен

 

#4 25.10.2011 16:00:47

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: конфиг для auto_increment

Так

insert into `news`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
тоже можно. У Вас изначально не работало потому, что Вы при перечислении названий полей обрамляли названия в не тот вид кавычек.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 25.10.2011 16:16:23

SanyaGarik
Завсегдатай
Зарегистрирован: 25.10.2011
Сообщений: 26

Re: конфиг для auto_increment

deadka написал:

Так

insert into `news`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
тоже можно. У Вас изначально не работало потому, что Вы при перечислении названий полей обрамляли названия в не тот вид кавычек.

Так

insert into `news`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
к сожалению нельзя, пишет Incorrect integer value

Неактивен

 

#6 25.10.2011 16:19:25

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: конфиг для auto_increment

Хм. Повторите мою последовательность действий.

Код:

mysql> create table t_4859(id integer auto_increment primary key, value text);
Query OK, 0 rows affected (1.03 sec)

mysql> insert into `t_4859`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.1.57    |
+-----------+
1 row in set (0.03 sec)

Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 25.10.2011 16:26:40

SanyaGarik
Завсегдатай
Зарегистрирован: 25.10.2011
Сообщений: 26

Re: конфиг для auto_increment

1366 - incorrect integer value: '' for column 'id' at row 1

Неактивен

 

#8 25.10.2011 16:27:34

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: конфиг для auto_increment

Версию mysql посмотрите пожалуйста.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#9 25.10.2011 16:33:25

SanyaGarik
Завсегдатай
Зарегистрирован: 25.10.2011
Сообщений: 26

Re: конфиг для auto_increment

deadka написал:

Версию mysql посмотрите пожалуйста.

да, сори, незаметил. 5.1.35-community, сейчас поставлю такую версию как у вас

Отредактированно SanyaGarik (25.10.2011 16:37:35)

Неактивен

 

#10 25.10.2011 16:45:49

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: конфиг для auto_increment

Дело тут не в версии, такое ощущение, что у вас sql_mode построже, чем у меня smile.
Его можно посмотреть с помощью
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

Какой он у Вас сейчас?

Теперь повторите следующую последовательность:

Код:

mysql> SET sql_mode = '';
Query OK, 0 rows affected (0.00 sec)

mysql> insert into `t_4859`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SET sql_mode = STRICT_TRANS_TABLES;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into `t_4859`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1

Отредактированно deadka (25.10.2011 16:46:14)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#11 25.10.2011 17:03:16

SanyaGarik
Завсегдатай
Зарегистрирован: 25.10.2011
Сообщений: 26

Re: конфиг для auto_increment

deadka написал:

Дело тут не в версии, такое ощущение, что у вас sql_mode построже, чем у меня smile.
Его можно посмотреть с помощью
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

Какой он у Вас сейчас?

Теперь повторите следующую последовательность:

Код:

mysql> SET sql_mode = '';
Query OK, 0 rows affected (0.00 sec)

mysql> insert into `t_4859`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SET sql_mode = STRICT_TRANS_TABLES;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into `t_4859`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'id' at row 1

SELECT @@GLOBAL.sql_mode;
     STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
SELECT @@SESSION.sql_mode;
     STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Код:

mysql> SET sql_mode = '';
Affected rows: 0
Time: 0.001ms

insert into `t_4859`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
Affected rows: 1
Time: 0.002ms

sql_mode = STRICT_TRANS_TABLES;
Affected rows: 0
Time: 0.000ms

insert into `t_4859`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');
1366 - incorrect integer value: '' for column 'id' at row 1

Неактивен

 

#12 25.10.2011 17:08:39

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: конфиг для auto_increment

То есть результат ожидаемый - от установки STRICT_TRANS_TABLES зависит способность MySQL принимать некоторые некорректные значения или не принимать.  Если уберете STRICT_TRANS_TABLES - сможете вставлять так, как хотели изначально. Правда совершенно не понимаю, зачем это Вам.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#13 25.10.2011 17:14:47

SanyaGarik
Завсегдатай
Зарегистрирован: 25.10.2011
Сообщений: 26

Re: конфиг для auto_increment

deadka написал:

То есть результат ожидаемый - от установки STRICT_TRANS_TABLES зависит способность MySQL принимать некоторые некорректные значения или не принимать.  Если уберете STRICT_TRANS_TABLES - сможете вставлять так, как хотели изначально. Правда совершенно не понимаю, зачем это Вам.

Большое спасибо, теперь все работает. Мне это для того, чтобы у меня локальный сервер mysql работал так же как на хостинге

Неактивен

 

Board footer

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