Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Есть запрос
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 работал так же как на хостинге
Неактивен