повторяющаяся запись в первичном ключе mysql - PullRequest
0 голосов
/ 27 апреля 2011

Моя программа действительно проста: она вставляет одно и то же значение в один столбец и обновляет отметку времени и дату в другом столбце. Он также имеет столбец идентификатора с автоинкрементом, который действует как первичный ключ таблицы.

+-------+------------+------+-----+-------------------+-----------------------------+
| Field | Type       | Null | Key | Default           | Extra                       |
+-------+------------+------+-----+-------------------+-----------------------------+
| id    | bigint(20) | NO   | PRI | NULL              | auto_increment              |
| Power | float      | YES  |     | NULL              |                             |
| dt    | timestamp  | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+------------+------+-----+-------------------+-----------------------------+

на данный момент я застрял с id = 4000 Power = 40996 и dt = recent date time

Как только я пытаюсь запустить команду, которая вставляет данные в таблицу, я получаю сообщение об ошибке

повторяющаяся запись '4971' для ключа 'primary'

контрольная таблица:

+----------------+-------+----------+-----------------------------------------------------------+
| Table          | Op    | Msg_type | Msg_text                                                  |
+----------------+-------+----------+-----------------------------------------------------------+
| newdb.newmeter | check | warning  | Table is marked as crashed                                |
| newdb.newmeter | check | warning  | 19 clients are using or haven't closed the table properly |
| newdb.newmeter | check | warning  | Size of datafile is: 68816       Should be: 68663         |
| newdb.newmeter | check | error    | Found 4048 keys of 4039                                   |
| newdb.newmeter | check | error    | Corrupt                                                   |
+----------------+-------+----------+-----------------------------------------------------------+

1 Ответ

1 голос
/ 27 апреля 2011

Резервное копирование ваших данных. Если вы можете позволить себе отключить mysqld, вы должны сделать это и использовать myisamchk для восстановления таблицы. Если это не вариант, попробуйте сделать FLUSH TABLES; и РЕМОНТНЫЙ СТОЛ newmeter; Будьте готовы к тому, что данные в вашей таблице не очень точны.

...