В моем проекте только две таблицы, и проблема в том, что я не могу добавить больше записи, которая уже существует:
select from acceso>
+----+---------------+---------------------+-----------+-----------+------------+
| id | ip | date | bloqueado | categoria | comentario |
+----+---------------+---------------------+-----------+-----------+------------+
| 1 | 201.214.164.5 | 2018-05-31 01:16:10 | 0 | 1 | NULL |
+----+---------------+---------------------+-----------+-----------+------------+
select from categoria>
mysql> select * from categoria;
+----+---------+
| id | nombre |
+----+---------+
| 1 | general |
+----+---------+
Это сценарий, который я изменил:
drop table categoria;
drop table acceso;
CREATE TABLE categoria (
cat_id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL
);
CREATE TABLE acceso (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ip VARCHAR(30) NOT NULL,
date datetime NOT NULL,
bloqueado tinyint(1) NOT NULL,
categoria int(11) NOT NULL,
comentario TEXT,
FOREIGN KEY (id) REFERENCES categoria(cat_id)
);
Когда я пытаюсь добавить в таблицу "acceso", которую он выдает, "невозможно добавить или обновить дочернюю строку ...":
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`c9`.`acceso`, CONSTRAINT `acceso_ibfk_1` FOREIGN KEY (`id`) REFERENCES `categoria` (`cat_id`))
Как вы можете видеть в этой последней записи, я не пытаюсьдобавить что-то другое в таблицу категорий, и между этими двумя идентификаторами нет никакой разницы, но должно быть что-то еще, о чем я не знаю.
РЕДАКТИРОВАТЬ: Теперь я понял.КЛЮЧЕВОЙ КЛЮЧ указывает на неправильный столбец (acceso.id вместо acceso.categoria).
CREATE TABLE categoria (
cat_id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL
);
CREATE TABLE acceso (
id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ip VARCHAR(30) NOT NULL,
date datetime NOT NULL,
bloqueado tinyint(1) NOT NULL,
categoria int(11) UNSIGNED NOT NULL,
comentario TEXT,
FOREIGN KEY (categoria) REFERENCES categoria(cat_id)
);