[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: непонятная ошибка
kart
Работаю с MySql через командную строку, выполняю простой insert, в ответ вижу сообщение:

Query OK, 1 row affected, 1 warning <0.00 sec>

данные то добавляются, но при insert`е в ЛЮБУЮ таблицу ЛЮБОЙ из существующих БД вылетает подобная ошибка, даже если таблица новая!!! При чём update возвращает Warnings: 0 с чем это может быть связанно?



Спустя 12 часов, 43 минуты, 52 секунды (10.06.2007 - 14:34) disc написал(а):
Покажи запрос и структуру Таблицы

Спустя 1 час, 53 минуты, 34 секунды (10.06.2007 - 16:28) kart написал(а):
Цитата(disc @ 10.6.2007, 14:34) [snapback]22392[/snapback]
Покажи запрос и структуру Таблицы

disc, написал тебе большой ответ, и тут меня осенило!

Таблицы в основном имеют следующую структуру
Код
+-------+-------------+------+-----+---------+----------------+
| Field |     Type    | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(2)      |      | PRI | NULL    | auto_increment |
| name  | varchar(30) |      |     |         |                |
+-------+-------------+------+-----+---------+----------------+


А проблема заключалась в кривых запросах... я привык, работая долгое время с pma, который подобных ошибок не возвращает, юзать такую конструкцию :

mysql> insert into TABLE values ('', 'hello');

но как теперь я понял, пустое значение для int() - это не айс blush.gif хотя auto_increment срабатывает и данные добавляются....

Спустя 2 дня, 17 часов, 5 минут, 44 секунды (13.06.2007 - 09:33) TRIAL написал(а):
Это что за атрибуты к id такие? Длина не более 2х символов???
я обычно делаю следующее
id int not null auto_increment primary key;
там автоматов вроде int 10 равен.

Почему при добавлении в запросе '' для id не катит? А как еще? Прописать NULL?

Спустя 6 часов, 25 минут, 34 секунды (13.06.2007 - 15:59) kart написал(а):
Цитата(TRIAL @ 13.6.2007, 9:33) [snapback]22582[/snapback]
Это что за атрибуты к id такие? Длина не более 2х символов???
я обычно делаю следующее
id int not null auto_increment primary key;
там автоматов вроде int 10 равен.

В контексте приведенного примера не важно чему равен int(), а вообще ограничение в виде двойки ставится для какой-никакой оптимизации, например таблица содержит регионы России, которых всего 88, так зачем мне в таком случае int(10)? А int(2) самое то!

Цитата(TRIAL @ 13.6.2007, 9:33) [snapback]22582[/snapback]
Почему при добавлении в запросе '' для id не катит?

потому что id ожидает число, а не строку!

Цитата(TRIAL @ 13.6.2007, 9:33) [snapback]22582[/snapback]
А как еще?

INSERT INTO `tbl_name` SET `col_name`='expression';
Игнорируя при этом поле id, оно само auto_increment`ом добавится!

Спустя 2 часа, 5 минут, 45 секунд (13.06.2007 - 18:05) Timok написал(а):
Цитата(Manual)
Еще одно расширение указанного стандарта, поддерживаемое MySQL, позволяет при необходимости указывать количество показываемых пользователю символов целого числа в круглых скобках, следующих за базовым ключевым словом данного типа (например INT(4)). Это необязательное указание количества выводимых символов используется для дополнения слева выводимых значений, которые содержат символов меньше, чем заданная ширина столбца, однако не накладывает ограничений ни на диапазон величин, которые могут храниться в столбце, ни на количество разрядов, которые могут выводиться для величин, у которых количество символов превосходит ширину данного столбца.

без разницы int(2) или int(10) - один хрен INT
например создай таблицу с полями
1)`a` SMALLINT(10),
2)`b` INT(2)
и попробуй внести в них число, например 1 000 000. В первом поле отмечено SMALLINT(10), но введётся только 32767, а у второго INT(2), но весь 1 000 000 прекрасно в нём запишется. Чтобы ограничить диапазон чисел используй типы TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.