J'utilise Rails Fixtures pour charger des données de test dans ma base de données et j'ai accidentellement introduit une clé étrangère hors de portée. À ma grande surprise, la base de données l'a acceptée malgré les contraintes d'intégrité référentielle (qui fonctionnent). J'ai essayé avec PostgreSQL et avec MySQL InnoDB et les deux ont permis.Les bases de données permettent de mauvaises clés étrangères des Rails Fixtures
Exemple:
ayant dans la base de données "Flavours" cinque une clé primaire numérique (id), 5 entrées (1 à 5). Je peux présenter des données incorrectes faire:
Icecream_1: nom: ma crème glacée flavour_id: 6
Comment est-il possible que les installations de chargement vont autour de mes contraintes de base de données?
Merci.
Voici deux tables. Ayant 200 user_types (fausses données) j'ai pu introduire un utilisateur avec user_type_id 201 mais seulement des fixtures, pgAdmin l'interdit.
CREATE SEQUENCE user_types_id_seq;
CREATE TABLE user_types (
id SMALLINT
NOT NULL
DEFAULT NEXTVAL('user_types_id_seq'),
name VARCHAR(45)
NOT NULL
UNIQUE,
PRIMARY KEY (id));
CREATE SEQUENCE users_id_seq;
CREATE TABLE users (
id BIGINT
NOT NULL
DEFAULT NEXTVAL('users_id_seq'),
user_type_id SMALLINT
NOT NULL
REFERENCES user_types (id) ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY (id));
---------
Fixture
<% for i in (1..201) %>
user_<%= i %>:
id: <%= i %>
user_type_id: <%= i %>
<% end %>
Et comme je l'ai dit, innoDb et postgresql ont tous deux accepté la mauvaise clé.
Merci
Il pourrait y avoir une idée là-bas. –
Voir la mise à jour. –