元のスクリプトで見られる問題は次のとおりです。
BLOB
列に値をTEXT
含めることはできませんDEFAULT
。
TINYTEXT
はと同じVARCHAR(255)
であるため、フィールドの最大長を宣言することはできません。これは、TINYTEXT
フィールドがすでに暗黙指定されているためです。
単語の間にスペースが必要ですPRIMARYKEY
。する必要がありますPRIMARY KEY
。
最後に、それ自体は問題ではありませんが、最初のCREATE TABLE
ステートメントでは、間隔が奇数になっています。行を次のように変更ClientEmail
すると、読みやすくなります。
ずっといい:
ClientPhone CHAR(10) NOT NULL,
ClientEmail TINYTEXT NOT NULL,
詳細については、MySQLのドキュメントを参照してください。これらすべての修正の後、これらは機能するMySQLクエリです。
CREATE DATABASE bankbase;
USE bankbase;
CREATE TABLE clienttable(
ClientID SMALLINT(15) NOT NULL DEFAULT 0,
ClientFirstName VARCHAR(30) NOT NULL DEFAULT "first name",
ClientLastName VARCHAR(30) NOT NULL DEFAULT "last name",
ClientPhone CHAR(10) NOT NULL,
ClientEmail TINYTEXT NULL,
ClientAddress TINYTEXT NOT NULL,
PRIMARY KEY(ClientID)
);
CREATE TABLE branchtable(
BranchID SMALLINT(15) NOT NULL DEFAULT 0,
BranchCity TINYTEXT NOT NULL,
BranchManagerFName VARCHAR(30) NULL DEFAULT "Branch Manager's First Name",
BranchManagerLName VARCHAR(30) NULL DEFAULT "Branch Manager's LAst Name",
BranchPhone CHAR(10) NOT NULL,
BranchEmail TINYTEXT NULL,
PRIMARY KEY(BranchID)
);
CREATE TABLE transactiontable(
TypeID SMALLINT(15) NOT NULL DEFAULT 0,
Type ENUM('CHEQUING','SAVINGS') NOT NULL,
TransAmount DECIMAL NOT NULL,
TransDate TIMESTAMP NOT NULL,
Balance DOUBLE NOT NULL,
PRIMARY KEY(TypeID)
);
このSQLフィドルをクリックBuild Schema
すると、機能することがわかります。
このようなエラーを系統的に修正する方法に関するもう少しの情報
CREATE TABLE
系統だった場合、これらの問題は、特にステートメントを使用すると簡単に解決できます。たとえば、最初のCREATE TABLE
ステートメントをデバッグするときは、列の宣言を1つずつ移動します。
最初の列だけでテーブルを作成してみてください。
CREATE TABLE clienttable(
ClientID SMALLINT(15) NOT NULL DEFAULT 0);
そのコードは機能するので、エラーをスローするものを追加するまで、テーブルを削除し、列を1つずつ追加します。
DROP TABLE clienttable;
CREATE TABLE clienttable(
ClientID SMALLINT(15) NOT NULL DEFAULT 0,
ClientFirstName VARCHAR(30) NOT NULL DEFAULT "first name",
ClientLastName VARCHAR(30) NOT NULL DEFAULT "last name",
ClientPhone CHAR(10) NOT NULL, ClientEmail
TINYTEXT(30) NULL);
あなたが尋ねたエラーが発生します:
エラー1064(42000):SQL構文にエラーがあります。7行目の「(30)NULL)」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。
これで、どの行にエラーがあるかが正確にわかります。私は時々このように書かれたコードを見たことがあります(これは前の例と同じコードです):
CREATE TABLE clienttable(
ClientID
SMALLINT(15)
NOT NULL
DEFAULT 0,
ClientFirstName
VARCHAR(30)
NOT NULL
DEFAULT "first name",
ClientLastName
VARCHAR(30)
NOT NULL
DEFAULT "last name",
ClientPhone
CHAR(10)
NOT NULL,
ClientEmail
TINYTEXT(30) //Line 18 <- This is where the error occurs
NULL);
はい、読みやすくはありませんが、実行すると構文エラーat line 18
、つまりTINYTEXT(30)
行が発生します。ドキュメントを読んだり、オンラインで質問したりするなどして、これが間違っている理由がわかります。すべてのエラーが修正されたら、コードを再度読み取り可能にして、設定を完了します。