web-dev-qa-db-ja.com

#1064-SQL構文にエラーがあります。 MySQLサーバーのバージョンに対応するマニュアルを確認してください

私はPHPMySQLが初めてで、私が取り組んでいる学習プロジェクトで少しトラブルに遭遇しました。

テーブルを作成しようとするたびに

CREATE TABLE transactions(
id int NOT NULL AUTO_INCREMENT,
location varchar(50) NOT NULL,
description varchar(50) NOT NULL,
category varchar(50) NOT NULL,
amount double(10) NOT NULL,
type varchar(6) NOT NULL, 
notes varchar(512),
receipt int(10),
)

次のエラーメッセージが表示されます。

#1064-SQL構文にエラーがあります。使用する正しい構文については、MySQLサーバーバージョンに対応するマニュアルを確認してください ')NOT NULL、タイプvarchar(6)NOT NULL、ノートvarchar(512)、receipt int(10)、'行6 **

ここに私が取り組んでいるものに関するいくつかの情報があります

  1. サーバータイプ:MySQL
  2. サーバーバージョン:5.5.32-MySQL Community Server(GPL)
  3. phpMyAdmin:4.0.4.1、最新の安定バージョン:4.1.7

私はこれを超えて頭を壁にぶつけて1日を過ごしましたが、今は助けを求める時だと思います。誰かが私が間違っていることを教えてもらえないかと思っていましたか?

9
tsjr63

コンマを削除します

receipt int(10),

また、_AUTO INCREMENT_は[〜#〜] key [〜#〜]でなければなりません

doubleデータ型も小数点以下の桁数の精度を必要とするため、正しい構文はdouble(10,2)

11
G one

1つの明らかなことは、ここでコンマを削除する必要があることです。

receipt int(10),

しかし、実際の問題はラインのためです

amount double(10) NOT NULL,

に変更する

amount double NOT NULL,
5

MySQLでは、単語「タイプ」は予約語です。

1
ak-SE

ストアドルーチンの場合、[〜#〜] delimiter [〜#〜]を適切に使用するのを忘れているかもしれません。

0
newbie

次の2つの問題があります。

DOUBLE(10)精度の定義には、合計桁数と、小数点以下の合計桁数が必要です。

DOUBLE(10,8)は、合計10桁になり、小数点以下は8桁になります。

また、ID列をキーとして指定する必要があります。

CREATE TABLE transactions( 
id int NOT NULL AUTO_INCREMENT, 
location varchar(50) NOT NULL, 
description varchar(50) NOT NULL, 
category varchar(50) NOT NULL, 
amount double(10,9) NOT NULL, 
type varchar(6) NOT NULL,  
notes varchar(512), 
receipt int(10), 
PRIMARY KEY(id) );
0
oxtub

ルール1:primary key制約を指定せずに新しいテーブルを追加することはできません[何らかの方法で作成する場合はお勧めできません]。したがって、コード:

CREATE TABLE transactions( 
id int NOT NULL AUTO_INCREMENT, 
location varchar(50) NOT NULL, 
description varchar(50) NOT NULL, 
category varchar(50) NOT NULL, 
amount double(10,9) NOT NULL, 
type varchar(6) NOT NULL,  
notes varchar(512), 
receipt int(10), 
PRIMARY KEY(id));

ルール2:キーワード(定義済みの意味を持つ単語)をフィールド名として使用することはできません。ここでtypeはそのようなものが使用されます(通常Join Typesで使用されます)。したがって、コード:

CREATE TABLE transactions( 
id int NOT NULL AUTO_INCREMENT, 
location varchar(50) NOT NULL, 
description varchar(50) NOT NULL, 
category varchar(50) NOT NULL, 
amount double(10,9) NOT NULL, 
transaction_type varchar(6) NOT NULL,  
notes varchar(512), 
receipt int(10), 
PRIMARY KEY(id));

今、あなたはこのコードを試してみてください。まず、データベースユーザーインターフェイスで確認し(HeidiSQLを実行している、またはxampp/wampサーバーでも試すことができます)、このコードが機能することを確認します。次に、dbからテーブルを削除し、プログラムでコードを実行します。ありがとうございました。

0
Ataboy Josef