#1064 -Usted tiene un error en la sintaxis de SQL; consulte el manual que corresponde a la versión del servidor MySQL

Soy nuevo en el PHP y MySQL y se topó con un poco de dificultad con un proyecto de aprendizaje en el que estoy trabajando.

Cada vez que intento crear una tabla

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

Me sale el siguiente mensaje de error:

#1064 – Usted tiene un error en la sintaxis de SQL; consulte el manual que corresponde a la versión del servidor MySQL para el derecho de la sintaxis a utilizar
cerca de ‘) not NULL, tipo varchar(6) not NULL, notas varchar(512),
recibo int(10), ‘ en la línea 6**

Aquí hay algo de información sobre lo que estoy trabajando con

  1. Tipo de servidor: MySQL
  2. Versión del servidor: 5.5.32 – Comunidad de MySQL Server(GPL)
  3. phpMyAdmin: 4.0.4.1, última versión estable: 4.1.7

He pasado un día golpeando mi cabeza contra la pared sobre esto y ahora creo que es hora de pedir ayuda.Me preguntaba si alguien me puede decir qué estoy haciendo mal?

Tiene una coma al final de la receipt línea.

OriginalEl autor tsjr63 | 2014-02-15

5 respuestas

  1. 8

    Quitar la coma

    receipt int(10),

    Y también AUTO INCREMENT debe ser un CLAVE

    double tipo de datos también requiere de la precisión de decimales tan a la derecha de la sintaxis es la double(10,2)

    Esta respuesta es parcialmente correcta. No respuesta en lo que el mensaje de error devuelto.
    Gracias me olvidaba una cosa 🙂
    doble tipo de datos también requiere de la precisión de decimales tan a la derecha de la sintaxis es el doble(10,2)

    OriginalEl autor G one

  2. 4

    Una cosa obvia es que usted tendrá que quitar la coma aquí

    receipt int(10),

    pero el verdadero problema es debido a la línea de

    amount double(10) NOT NULL,

    cambiar a

    amount double NOT NULL,
    Esto funcionó para mí. Por qué no le puedo dar una longitud de un doble?
    Han sido años desde que se haya hecho esta pregunta, pero para la posteridad, la razón por la que esto funciona es que la sintaxis que se utiliza para dar longitud a una doble estaba equivocado. Usted necesita dar a la longitud en el formato doble(10, 2), donde 2 es el número de posiciones decimales. La eliminación de la longitud acaba de hacer es utilizar el valor predeterminado.

    OriginalEl autor Ahmed Salman Tahir

  3. 1

    En MySQL, la palabra “tipo” es una Palabra Reservada.

    OriginalEl autor ak-SE

  4. 0

    Veo dos problemas:

    DOBLE(10) la precisión de las definiciones necesita un número total de dígitos, así como un número total de dígitos después de la coma decimal:

    DOBLE(10,8)
    haría ser total de diez dígitos, con 8 permitido después de la coma decimal.

    También, deberá especificar su id de columna como clave :

    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) );
    Hay otros errores de lo que se le pide por OP.

    OriginalEl autor oxtub

  5. 0

    Regla 1: no Se puede agregar una nueva tabla sin especificar el primary key restricción[no es una buena práctica si usted cree que de alguna manera].
    Así, el código:

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

    Regla 2: no está permitido el uso de las palabras clave(palabras con significado predefinido) como un nombre de campo.
    Aquí tipo es algo así como el que se utiliza(comúnmente utilizado con Tipos de combinación).
    Así, el código:

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

    Ahora pruebe con este código.
    Primero revisa en la base de datos de la interfaz de usuario(estoy corriendo HeidiSQL, o usted puede probar en su xampp/wamp server también)y asegúrese de que este código funciona. Ahora elimine la tabla de su base de datos y ejecutar el código en el programa.
    Gracias.

    OriginalEl autor

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *