![]() |
Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Есть запрос
insert into `news` ('id', 'value') values (' ', 's'), поле id- auto_increment, выдает ошибку, потому что запрос должен быть вида insert into `news` ('value') values ('s') , но необходимо сделать так, чтоб работал первый вариант запроса, как этого можно добиться?
Неактивен
Вы не в те апострофы оборачиваете.
не insert into `news` ('id', 'value'),
а insert into `news` (`id`, `value`)
Что касается вставки с аттрибутом auto_increment, то можно
и так
Неактивен
а так чтобы вместо values(NULL, 'Здесь могла быть ваша реклама'); написать values('', 'Здесь могла быть ваша реклама'); Нужно именно в таком виде, точно известно, что так можно, но не знаю какие для этого настройки нужны
Неактивен
Так
Неактивен
deadka написал:
Так
insert into `news`(`id`,`value`) values('', 'Здесь могла быть ваша реклама');тоже можно. У Вас изначально не работало потому, что Вы при перечислении названий полей обрамляли названия в не тот вид кавычек.
Так
Неактивен
Хм. Повторите мою последовательность действий.
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)Неактивен
1366 - incorrect integer value: '' for column 'id' at row 1
Неактивен
Версию mysql посмотрите пожалуйста.
Неактивен
deadka написал:
Версию mysql посмотрите пожалуйста.
да, сори, незаметил. 5.1.35-community, сейчас поставлю такую версию как у вас
Отредактированно SanyaGarik (25.10.2011 16:37:35)
Неактивен
Дело тут не в версии, такое ощущение, что у вас sql_mode построже, чем у меня
.
Его можно посмотреть с помощью
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)
Неактивен
deadka написал:
Дело тут не в версии, такое ощущение, что у вас sql_mode построже, чем у меня
.
Его можно посмотреть с помощью
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Неактивен
То есть результат ожидаемый - от установки STRICT_TRANS_TABLES зависит способность MySQL принимать некоторые некорректные значения или не принимать. Если уберете STRICT_TRANS_TABLES - сможете вставлять так, как хотели изначально. Правда совершенно не понимаю, зачем это Вам.
Неактивен
deadka написал:
То есть результат ожидаемый - от установки STRICT_TRANS_TABLES зависит способность MySQL принимать некоторые некорректные значения или не принимать. Если уберете STRICT_TRANS_TABLES - сможете вставлять так, как хотели изначально. Правда совершенно не понимаю, зачем это Вам.
Большое спасибо, теперь все работает. Мне это для того, чтобы у меня локальный сервер mysql работал так же как на хостинге
Неактивен