mySql errno: 150 Создать внутри таблицы оператор
DROP TABLE IF EXISTS members;
CREATE TABLE members (
Member_ID char(10) NOT NULL default '',
Provider_ID char(10) NOT NULL default '',
First_Name varchar(30) NOT NULL default '',
Middle_Initial char(1) NOT NULL default '',
Last_Name varchar(40) NOT NULL default '',
Address varchar(100) NOT NULL default '',
City varchar(100) NOT NULL default '',
State char(2) NOT NULL default '',
Zip varchar(5) NOT NULL default '',
PRIMARY KEY (Member_ID),
FOREIGN KEY (PROVIDER_ID) REFERENCES PROVIDER(PROVIDER_ID)
) ;
DROP TABLE ЕСЛИ СУЩЕСТВУЕТ провайдер; Поставщик CREATE TABLE (Provider_ID char(10) NOT NULL по умолчанию '', Provider_Name varchar(50) NOT NULL по умолчанию '', Address varchar(100) NOT NULL по умолчанию '', City varchar(100) NOT NULL по умолчанию '', State char) (2) NOT NULL по умолчанию '', Zip char(5) NOT NULL по умолчанию '', PRIMARY KEY (Provider_ID));
DROP TABLE ЕСЛИ СУЩЕСТВУЮТ процедуры; Процедуры CREATE TABLE (имя_процесса char (10) NOT NULL по умолчанию '', Doctor_ID char(10) NOT NULL по умолчанию '', Member_ID char(10) NOT NULL по умолчанию '',ystem_Type_ID char(10) NOT NULL по умолчанию '', имя_процесса (50) NOT NULL по умолчанию '', Cost int (10) NOT NULL по умолчанию '0', Date_Executed date NOT NULL по умолчанию '2000-01-01', PRIMARY KEY(имя_процесса), FOREIGN KEY (DOCTOR_ID) REFERENCES DOCTOR (DOCTOR_ID), FOREIGN KEY (MEMBER_ID) REFERENCES MEMBER (MEMBER_ID), FOREIGN KEY (PROCEDURE_TYPE_ID) REFERENCES PROCEDURE_TYPE (PROCEDURE_TYPE_ID));
DROP TABLE ЕСЛИ СУЩЕСТВУЕТ СОЗДАЙТЕ ТАБЛИЦУ имя_процесса (Процедура_Тип_идентификации), FOREIGN KEY (PROCEDURE_ID) ССЫЛКИ ПРОЦЕДУРЫ (PROCEDURE_ID));
DROP TABLE ЕСЛИ СУЩЕСТВУЕТ doctor_type; CREATE TABLE doctor_type (Type_ID char(10) NOT NULL по умолчанию '', Type_Name varchar (50) NOT NULL по умолчанию '', Type_Description varchar(255) NOT NULL по умолчанию '', ПЕРВИЧНЫЙ КЛЮЧ (Type_ID));
DROP TABLE ЕСЛИ СУЩЕСТВУЕТ доктор; CREATE TABLE doctor (Doctor_ID char(10) NOT NULL по умолчанию '', Type_ID char(10) NOT NULL по умолчанию '', Doctor_Name varchar(50) NOT NULL по умолчанию '', Address varchar(100) NOT NULL по умолчанию '', City varchar(100) NOT NULL по умолчанию '', State char(2) NOT NULL по умолчанию '', Zip char(5) NOT NULL по умолчанию '', PRIMARY KEY(Doctor_ID), FOREIGN KEY(TYPE_ID) REFERENCES DOCTOR_TYPE(TYPE_ID));
ОШИБКА 1005 (HY000): не удалось создать таблицу 'thunderhawk.members' (номер ошибки: 150)
Есть идеи?
РЕДАКТИРОВАТЬ добавил остальные таблицы. Я знаю, что это проблема внешнего ключа. Я, кажется, следую синтаксису внешнего ключа...
4 ответа
Этот вопрос является обманом:
MySQL: невозможно создать таблицу (ошибка: 150)
Сообщение об ошибке говорит вам, в чем именно заключается проблема: таблица
thunderhawk.members
не может быть создан из-за номера ошибки (errno) 150, ограничение внешнего ключа будет нарушено:
FOREIGN KEY (PROVIDER_ID) REFERENCES PROVIDER(PROVIDER_ID)
Вы не можете создать таблицу до создания таблицы, потому что
members
таблица имеет зависимость внешнего ключа от
provider
стол.
Прежде всего вы должны убедиться, что обе таблицы должны иметь один и тот же тип хранения, как InnoDB.
см. здесь ссылку: http://verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/
Попробуйте этот код:
DROP TABLE ЕСЛИ СУЩЕСТВУЮТ участники;
CREATE TABLE members (
Member_ID char(10) NOT NULL default 0,
Provider_ID char(10) NOT NULL default 0,
First_Name varchar(30) NOT NULL default 0,
Middle_Initial char(1) NOT NULL default 0,
Last_Name varchar(40) NOT NULL default 0,
Address varchar(100) NOT NULL default 0,
City varchar(100) NOT NULL default 0,
State char(2) NOT NULL default 0,
Zip varchar(5) NOT NULL default 0,
PRIMARY KEY (Member_ID),
FOREIGN KEY (PROVIDER_ID) REFERENCES PROVIDER(PROVIDER_ID)
) ;
Обычно, если dbms не может создать таблицу, это означает, что следующие вещи могли пойти не так: a) Процесс dbms не имеет разрешения на запись в каталог данных или превышена квота диска для этой папки. б) файловая система заполнена и нет места для записи каких-либо данных в файл.
Проверьте ваш mysqld.log для более подробной информации.