web-dev-qa-db-de.com

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht

Ich bin neu bei PHP und MySQL und bin mit einem Lernprojekt, an dem ich gerade arbeite, in Schwierigkeiten geraten.

Wann immer ich versuche, eine Tabelle zu erstellen

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),
)

Ich erhalte folgende Fehlermeldung:

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, auf die richtige Syntax für die Verwendung von in der Nähe von ') NOT NULL, geben Sie varchar (6) NOT NULL ein. Hinweise varchar (512), Quittung int (10) 'in Zeile 6 **

Hier sind einige Informationen zu dem, was ich arbeite

  1. Servertyp: MySQL 
  2. Server Version: 5.5.32 - MySQL Community Server (GPL)
  3. phpMyAdmin: 4.0.4.1, letzte stabile Version: 4.1.7

Ich habe einen Tag damit verbracht, meinen Kopf gegen die Wand zu klopfen, und jetzt denke ich, es ist an der Zeit, um Hilfe zu bitten.

9
tsjr63

Entfernen Sie das Komma

receipt int(10),

Und auch AUTO INCREMENT sollte ein KEY sein

Der Datentyp double erfordert auch die Genauigkeit von Dezimalstellen, sodass die richtige Syntax double(10,2) ist.

8
G one

Eine offensichtliche Sache ist, dass Sie hier das Komma entfernen müssen

receipt int(10),

aber das eigentliche Problem liegt an der Leitung

amount double(10) NOT NULL,

Ändern Sie es in

amount double NOT NULL,
4

In MySQL ist der Worttyp ein reserviertes Wort.

1
ak-SE

Im Fall einer gespeicherten Routine haben Sie möglicherweise vergessen, TRENNZEICHEN richtig zu verwenden.

0
newbie

Ich sehe zwei Probleme:

DOUBLE (10) Präzisionsdefinitionen benötigen eine Gesamtzahl von Ziffern sowie eine Gesamtzahl von Ziffern nach dem Dezimalzeichen:

DOUBLE (10,8) .__ wäre zehn Ziffern, wobei 8 nach dem Dezimalzeichen zulässig sind.

Außerdem müssen Sie Ihre ID-Spalte als Schlüssel angeben:

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

Regel 1: Sie können keine neue Tabelle hinzufügen, ohne die primary key-Einschränkung anzugeben [nicht empfehlenswert, wenn Sie sie irgendwie erstellen] . Der Code lautet:

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));

Regel 2: Sie dürfen die Schlüsselwörter (Wörter mit vordefinierter Bedeutung) nicht als Feldnamen verwenden. Hier wird type so etwas verwendet (üblicherweise verwendet mit Join Types ) .So der Code:

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));

Versuchen Sie es jetzt mit diesem Code . Überprüfen Sie es zunächst in Ihrer Datenbankbenutzeroberfläche (ich verwende HeidiSQL oder Sie können es auch in Ihrem xampp/wamp-Server versuchen) und sicherstellen, dass dieser Code funktioniert. Löschen Sie nun die Tabelle aus Ihrer Datenbank und führen Sie den Code in Ihrem Programm aus. _ Vielen Dank.

0
Ataboy Josef