2014-09-03 5 views
-1

Моя таблица только имеет один столбец ID (пароли для администратора Логин)Дублировать запись для первичного ключа MySQL

Поскольку этот код запускается каждый раз при запуске эта программа, я могу избежать ошибок происходит на creating database и creating tables с помощью IF NOT EXIXTS заявление.

С adminLogin таблица должна быть первой, когда пользователь повторно запускает программу, возникает ошибка Duplicate entry for primary key.

Я использовал IF NOT EXISTS для вставки в таблицу, но есть еще одна ошибка!

Мой стол:

first screen

Ошибка:

second screen

+2

Научитесь просматривать документацию MySQL при получении синтаксической ошибки. (Инструкция Insert не принимает предложение WHERE.) –

ответ

3

Вы пытаетесь вставить одинаковое значение. ПК должен быть уникальным.

SET ID как автоинкремент.

CREATE TABLE `table_code` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `your_column` varchar(45) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; 
0

Другая возможность

INSERT INTO adminLogin(ID) VALUES(100) ON DUPLICATE KEY UPDATE ID=ID; 
0

Вы можете использовать INSERT IGNORE вместо этого.

ВСТАВЬТЕ ИГРЫ В АДМИНИЧЕСКИЕ ЗНАЧЕНИЯ (200);

+2

Обратите внимание, что 'IGNORE' следует использовать с осторожностью, потому что он будет игнорировать не только повторяющиеся ошибки, но и другие ошибки. – feelthhis

0

INSERT IGNORE INSERT ... ON DUPLICATE KEY UPDATE ... REPLACE INTO может работать без ошибок. В зависимости от ваших потребностей некоторые могут быть лучше, чем другие.

Вот краткие плюсы и минусы каждого из них:

ВСТАВИТЬ ИГНОРИРУЙТЕ: Pros: Легко писать Минусы: если данные, которые вставленные новее старые данные будут сохранены

ВСТАВКУ .. . дублированием KEY UPDATE ... Плюсы: Можно вставить или обновить определенные столбцы, которые могут иметь более свежие данные Минусы: немного сложнее написать запрос для

REPLACE INTO Pros: может вставить и Обновит e, которые могли бы иметь более свежие данные. Быстрее, чем Insert, при повторном обновлении ключа. Против: перезаписывает каждый столбец, хотя только некоторые столбцы могут иметь более новые данные. ЕСЛИ вы вставляете несколько заменяемых строк, это может потенциально переписать данные для существующих строк, которые вы действительно не хотите перезаписывать.

Смежные вопросы