Задавайте вопросы, мы ответим
Вы не зашли.
столкнулся с непонятной мне проблемой.имеется база данных,которая была написана на sqlite, решил сделать её на mysql.
но столкнулся с данной ошибкой.
всю базу описывать не буду для простоты.
имеется главная таблица аэропорт:
CREATE TABLE Airport (
code integer PRIMARY KEY
NOT NULL UNIQUE
CHECK ( code > 0 ),
capacityAirfield integer CHECK ( capacityAirfield > 0 ),
address CHAR( 15 ) NOT NULL UNIQUE,
name CHAR( 15 ) NOT NULL,
numberRunways integer CHECK ( numberRunways > 0 ),
capacityAirportComplex integer CHECK ( capacityAirportComplex > 0 )
);
и дочерняя к ней самолёт.в котором есть внешнее поле код аэропорта,по которому и идёт связь.
CREATE TABLE Airplane (
code integer PRIMARY KEY
NOT NULL CHECK ( code > 0 ),
name CHAR( 15 ) NOT NULL,
numberSeats integer NOT NULL CHECK ( numberSeats > 0 ),
range integer CHECK ( range > 0 ),
maximumSpeed integer CHECK ( maximumSpeed > 0 ),
codeAirport integer NOT NULL CHECK ( codeAirport > 0 )
REFERENCES Airport ( code)
);
при создании таблицы аэропорт не возникает ошибок.после создания таблицы самолёт ошибка.
скрин с ошибкой выложил
Неактивен
Если используете такие слова, как range в качесте имён полей - то оборачивайте в апострофы.
Не
range integer CHECK ( range > 0 )
а
`range` integer CHECK ( `range` > 0 )
И м/п если объявляете поле primary key, то нет нужды писать not null и unique.
Неактивен
deadka написал:
Если используете такие слова, как range в качесте имён полей - то оборачивайте в апострофы.
Не
range integer CHECK ( range > 0 )
а
`range` integer CHECK ( `range` > 0 )
И м/п если объявляете поле primary key, то нет нужды писать not null и unique.
спасибо,эту ошибку отловил.зато теперь ругается на REFERENCES Airport(code)
Неактивен
объявите это поле как foreign key.
Неактивен
CREATE TABLE Airplane (
code integer PRIMARY KEY CHECK ( code > 0 ),
name CHAR( 15 ) NOT NULL,
numberSeats integer NOT NULL CHECK ( numberSeats > 0 ),
flyRange integer CHECK (flyRange > 0 ),
maximumSpeed integer CHECK ( maximumSpeed > 0 ),
FOREIGN KEY codeAirport REFERENCES Airport ( code)
);
вот так?
тоже выдаёт ошибку.
я уже много вариантов написания внешних ключей перепробывал.
Неактивен
Неактивен
и на это у него тоже ошибка(
на всякий случай в этом скрине привёл вывод столбцов таблицы airport.
такое ощущение что он просто не видит таблицу аэропорт.
создание базы данных производил командой create database
потом зашёл в неё при помощи use
может в этом ошибка?
Неактивен
Неактивен
спасибо за помощь,вы очень помогли.
Неактивен
а составной внешний ключ пишется на подобии этого?
FOREIGN KEY (code,ticketNumber) REFERENCES Airplane ( code ),Passenger(ticketNumber)
вся таблица
CREATE TABLE AirplaneFlight (
code integer NOT NULL UNIQUE CHECK ( code > 0 ),
ticketNumber integer NOT NULL UNIQUE CHECK ( ticketNumber > 0 ),
PRIMARY KEY ( code, ticketNumber ),
FOREIGN KEY (code,ticketNumber) REFERENCES Airplane ( code ),Passenger(ticketNumber)
);
таблицу passenger опускаю,достаточно знать что она создана и там есть поле ticketNumber типа integer
Неактивен
спасибо,разобрался)
Неактивен