mySql errno: 150 Создать внутри таблицы оператор - PullRequest
1 голос
/ 07 мая 2011
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 по умолчанию '', Адрес varchar (100) NOT NULL по умолчанию '', Город varchar (100) NOT NULL по умолчанию '', State char (2) NOT NULL по умолчанию '', Zip char (5) NOT NULL по умолчанию '', ПЕРВИЧНЫЙ КЛЮЧ (Provider_ID) );

DROP TABLE, если существуют процедуры; Процедуры CREATE TABLE ( Процедура_ID char (10) NOT NULL по умолчанию '', Doctor_ID char (10) NOT NULL по умолчанию '', Member_ID char (10) NOT NULL по умолчанию '', Method_Type_ID char (10) NOT NULL по умолчанию '', Имя_процесса varchar (50) NOT NULL по умолчанию '', Стоимость int (10) NOT NULL по умолчанию '0', Date_Executed date NOT NULL по умолчанию '2000-01-01', ПЕРВИЧНЫЙ КЛЮЧ (идентификатор_процедуры), FOREIGN KEY (DOCTOR_ID) ССЫЛКИ DOCTOR (DOCTOR_ID), FOREIGN KEY (MEMBER_ID) ССЫЛКИ ЧЛЕН (MEMBER_ID), FOREIGN KEY (PROCEDURE_TYPE_ID) ССЫЛКИ PROCEDURE_TYPE (PROCEDURE_TYPE_ID) );

DROP TABLE ЕСЛИ СУЩЕСТВУЕТ method_type; CREATE TABLE имя_процесса ( Method_Type_ID char (10) NOT NULL по умолчанию '', Имя_процесса_процесса_программа_NARCHAR (50) по умолчанию NOT NULL '', Процедура_Описание varchar (255) NOT NULL по умолчанию '', Процедура_ID char (10) NOT NULL по умолчанию '', ПЕРВИЧНЫЙ КЛЮЧ (имя_процесса_ID), 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) );

ОТКРЫТЬ СТОЛ, ЕСЛИ СУЩЕСТВУЕТ доктор; CREATE TABLE доктор ( Doctor_ID char (10) NOT NULL по умолчанию '', Type_ID char (10) NOT NULL по умолчанию '', Doctor_Name varchar (50) NOT NULL по умолчанию '', Адрес varchar (100) NOT NULL по умолчанию '', Город varchar (100) NOT NULL по умолчанию '', State char (2) NOT NULL по умолчанию '', Zip char (5) NOT NULL по умолчанию '', ПЕРВИЧНЫЙ КЛЮЧ (Doctor_ID), FOREIGN KEY (TYPE_ID) ССЫЛКИ DOCTOR_TYPE (TYPE_ID) );

ОШИБКА 1005 (HY000): не удалось создать таблицу 'thunderhawk.members' (номер ошибки: 150)

Есть идеи?

РЕДАКТИРОВАТЬ добавил остальные таблицы. Я знаю, что это проблема внешнего ключа. Кажется, я следую синтаксису внешнего ключа ...

Ответы [ 3 ]

0 голосов
/ 07 мая 2011

Прежде всего, вам необходимо убедиться, что обе таблицы имеют одинаковый тип хранения, такой как InnoDB.

смотрите здесь ссылку: http://verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/

0 голосов
/ 02 декабря 2014

Попробуйте этот код:

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)
) ;
0 голосов
/ 07 мая 2011

Обычно, если dbms не может создать таблицу, это означает, что следующие вещи могли пойти не так: a) Процесс dbms не имеет разрешения на запись в каталог данных или превышена квота диска для папки.,б) файловая система переполнена, и в ней нет места для записи каких-либо данных в файл.

Проверьте подробности в своем mysqld.log.

...