Mam nastepujace pytanie. Podczas tworzenia bazy danych system (MySQL) wyrzuca mi nastepujacy blad:
Kod
ERROR 1005: Nie mo┐na stworzyŠ tabeli '.ankieta#sql-898_37.frm' (Kod b│ŕdu: 150)
Niestety to co znalazlem w manualu na ten temat nie wiele mi mowi. Nadal nie wiem gdzie lezy blad. Ponizej przedstawiam kod sql.
[sql:1:14aa9c49d8]
CREATE TABLE glosujacy (
glosujacy_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
glosujacy_agent VARCHAR(128) NOT NULL,
glosujacy_czas TIMESTAMP NOT NULL DEFAULT 'CURRENT_TIMESTAMP',
glosujacy_sesja VARCHAR(32) NOT NULL,
PRIMARY KEY (glosujacy_id),
UNIQUE (glosujacy_sesja)
) Type = InnoDB;
CREATE TABLE glosujacy_dane (
glosujacy_id INTEGER UNSIGNED NOT NULL,
glosujacy_plec ENUM('K','M') NOT NULL,
glosujacy_urodzony CHAR(4) NOT NULL,
wojewodztwa_id INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (glosujacy_id)
) Type = InnoDB;
CREATE TABLE wojewodztwa (
wojewodztwa_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
wojewodztwa_nazwa CHAR(20) NOT NULL,
PRIMARY KEY (wojewodztwa_id),
UNIQUE (wojewodztwa_nazwa)
) Type = InnoDB;
CREATE TABLE ankiety (
ankieta_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ankieta_nazwa VARCHAR(32) NOT NULL,
ankieta_opis TEXT NOT NULL,
ankieta_start DATE NOT NULL,
ankieta_stop DATE NOT NULL,
PRIMARY KEY (ankieta_id)
) Type = InnoDB;
CREATE TABLE ankieta_biezaca (
ankieta_id INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (ankieta_id)
) Type = InnoDB;
CREATE TABLE pytania (
pytanie_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
ankieta_id INTEGER UNSIGNED NOT NULL,
pytanie_tresc VARCHAR(255) NOT NULL,
PRIMARY KEY (pytanie_id)
) Type = InnoDB;
CREATE TABLE odpowiedzi (
odpowiedz_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
pytanie_id INTEGER UNSIGNED NOT NULL,
odpowiedz_tresc VARCHAR(255) NOT NULL,
PRIMARY KEY (odpowiedz_id)
) Type = InnoDB;
CREATE TABLE glosujacy_odpowiedzi (
glosujacy_id INTEGER UNSIGNED NOT NULL,
odpowiedz_id INTEGER UNSIGNED NOT NULL,
PRIMARY KEY (glosujacy_id, odpowiedz_id)
) Type = InnoDB;
ALTER TABLE glosujacy_dane
ADD FOREIGN KEY (glosujacy_id) REFERENCES glosujacy (glosujacy_id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE glosujacy_dane
ADD FOREIGN KEY (wojewodztwa_id) REFERENCES wojewodztwa (wojewodztwa_id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE ankieta_biezaca
ADD FOREIGN KEY (ankieta_id) REFERENCES ankiety (ankieta_id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE pytania
ADD FOREIGN KEY (ankieta_id) REFERENCES ankiety (ankieta_id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE odpowiedzi
ADD FOREIGN KEY (pytanie_id) REFERENCES pytania (pytanie_id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE glosujacy_odpowiedzi
ADD FOREIGN KEY (odpowiedz_id) REFERENCES odpowiedzi (odpowiedz_id) ON DELETE RESTRICT ON UPDATE RESTRICT;
ALTER TABLE glosujacy_odpowiedzi
ADD FOREIGN KEY (glosujacy_id) REFERENCES glosujacy (glosujacy_id) ON DELETE RESTRICT ON UPDATE RESTRICT;
[/sql:1:14aa9c49d8]
Dodam, ze korzystam z wersji 4.0.15-max-nt
Mam tez jeszcze jedno pytanie. Mimo iz przy danym polu mam ustawione NOT NULL to system dopuszcza wprowadzenie rekordu z pusta wartoscia w tym polu. Dlaczego sie tak dzieje?
Dzieki za odpowiedzi.