Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > проблема с 'PRIMARY KEY'


Автор: tcg2 15.9.2011, 15:12
[mysql  Ver 14.14 Distrib 5.5.14]

Вопрос: как работают с 'PRIMARY KEY'/ - какие команды, стратегии.
Я пока делал, но не помогло (возможно не так делал):
Код



    * Create a new column with a unique constraint, drop the original column, and make the new one your PK.

    * Alternatively, create a new table with a new PK, copy across everything except the duplicate column, drop the original table and rename the new.


При попытке что либо записать в базу, в логах пишется только вот такое:
Код

ERROR 1062 (23000) at line 1: Duplicate entry '8388607' for key 'PRIMARY'


Код


mysql> select * from logstable;
+----+------+----------+----------+-------+------------+---------------------+-----------------+------+-----+---------+------+---------------------+
| id | host | facility | priority | level | tag        | datetime            | program         | msg  | seq | counter | fo   | lo                  |
+----+------+----------+----------+-------+------------+---------------------+-----------------+------+-----+---------+------+---------------------+
|  1 | mail | notice   | notice   | 15    | 2011-09-15 | 0000-00-00 00:00:00 | p8EK26P6029033: | 0    |   1 |       0 | NULL | 0000-00-00 00:00:00 |
+----+------+----------+----------+-------+------------+---------------------+-----------------+------+-----+---------+------+---------------------+
1 row in set (0.00 sec)

mysql> select * from logstable where id=8388607;
Empty set (0.00 sec)


mysql>show create table;

logstable | CREATE TABLE `logstable` (
  `id` mediumint(9) NOT NULL AUTO_INCREMENT,
  `host` varchar(128) DEFAULT NULL,
  `facility` varchar(10) DEFAULT NULL,
  `priority` varchar(10) DEFAULT NULL,
  `level` varchar(10) DEFAULT NULL,
  `tag` varchar(10) DEFAULT NULL,
  `datetime` datetime DEFAULT NULL,
  `program` varchar(15) DEFAULT NULL,
  `msg` text,
  `seq` bigint(20) NOT NULL DEFAULT '0',
  `counter` int(11) NOT NULL DEFAULT '1',
  `fo` datetime DEFAULT NULL,
  `lo` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `datetime` (`datetime`),
  KEY `sequence` (`seq`),
  KEY `priority` (`priority`),
  KEY `facility` (`facility`),
  KEY `program` (`program`),
  KEY `host` (`host`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1


При создание новой базой, все ОК, но хочется понят в чем там дело.
Думаю без помощи не разберус!

Автор: triclosan 15.9.2011, 17:42
вы хотите перенумеровать праймари кей попроядку или что?

Автор: tcg2 15.9.2011, 22:27
Хочу чтобы ругань убралась, а с новый или измененый PRIMARY KEY, в принципе не имеет значения.
Код

ERROR 1062 (23000) at line 1: Duplicate entry '8388607' for key 'PRIMARY'

Автор: triclosan 15.9.2011, 22:37
в чем заключается поставленная вами задача?

Автор: tcg2 16.9.2011, 00:53
сбор syslog'a с девайсов. Без этого фиксируется попытка, запис в базу, но запис не идет, а вместо нее в логах вышеуказаная ругань. Аналогичная база работает параллельно, для другого облако девайсов и там все нормально. Просто хочется разобраться в чем там дело. Если все заного делать все будет работат, проверено. Просто я как-то раз удалил лишнию таблицу и создал заного, и видимо напутал что-то.

Автор: triclosan 16.9.2011, 14:56
в инсерте оставляйте поле айди пустым

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)