1

MySQL データベースをセットアップするために、次のスクリプトを作成しました。

CREATE DATABASE IF NOT EXISTS magicc_hat;
USE magicc_hat;

CREATE TABLE people (
  personID INT NOT NULL AUTO_INCREMENT,
  firstName VARCHAR(45) NOT NULL,
  lastName VARCHAR(45),
  archived BOOL NOT NULL DEFAULT '0',

  PRIMARY KEY (personID)
);

CREATE TABLE categories (
  categoryID INT NOT NULL AUTO_INCREMENT,
  categoryName VARCHAR(45) NOT NULL,
  description TEXT,
  archived BOOL NOT NULL DEFAULT '0',

  PRIMARY KEY (categoryID)
);

CREATE TABLE homes (
  homeID INT NOT NULL AUTO_INCREMENT,
  homeName VARCHAR(45) NOT NULL,
  notes TEXT,
  archived BOOL NOT NULL DEFAULT '0',

  PRIMARY KEY (homeID)
};

CREATE TABLE items (
  itemID INT NOT NULL AUTO_INCREMENT,
  itemName VARCHAR(100) NOT NULL,
  identifier VARCHAR(100),
  quantity INT NOT NULL,
  categoryID INT NOT NULL,
  homeID INT NOT NULL,
  itemStatus ENUM('normal', 'broken', 'missing') NOT NULL DEFAULT 'normal',
  description TEXT,
  image VARCHAR(45),
  notes TEXT,
  archived BOOL NOT NULL DEFAULT '0',

  PRIMARY KEY (itemID),
  FOREIGN KEY (categoryID) REFERENCES categories(categoryID),
  FOREIGN KEY (homeID) REFERENCES homes(homeID)
};

CREATE TABLE projects (
  projectID INT NOT NULL AUTO_INCREMENT,
  projectName VARCHAR(45) NOT NULL,
  description TEXT,
  archived BOOL NOT NULL DEFAULT '0',

  PRIMARY KEY (projectID)
);

CREATE TABLE checkouts (
  checkoutID INT NOT NULL AUTO_INCREMENT,
  itemID INT NOT NULL,
  personID INT NOT NULL,
  projectID INT,
  quantity INT NOT NULL,
  outDateTime DATETIME,
  inDateTime DATETIME,
  outNotes TEXT,
  inNotes TEXT,
  checkedIn BOOL,
  archived BOOL NOT NULL DEFAULT '0',

  PRIMARY KEY (checkoutID),
  FOREIGN KEY (itemID) REFERENCES items(itemID),
  FOREIGN KEY (personID) REFERENCES people(personID),
  FOREIGN KEY (projectID) REFERENCES projects(projectID)
);

ただし、このスクリプトを実行すると、次のエラー メッセージが表示されます。

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '}' at line 8

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '}' at line 17

ERROR 1215 (HY000): Cannot add foreign key constraint

8行目と17行目でboolデータ型が発生しているため、boolデータ型の使用に関係があると思われます。ただし、この問題の解決策をオンラインで見つけることができませんでした。問題の原因を特定できる人はいますか? ローカルの Windows マシンで MySQL 5.6.11 を実行しています。

ありがとう!

4

4 に答える 4