2010-05-02 11 views
0

J'ai cette partie de SQL qui est en train d'être alimentée à Mysql.erreur de syntaxe mysql pour timestamp

CREATE TABLE pn_history(
member INT, 
action INT, 
with INT, 
timestamp DATETIME, 
details VARCHAR(256) 
) 

Mais il s'agit d'une erreur concernant la syntaxe.

#1064 - 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 'with INT, 
timestamp DATETIME, 
details VARCHAR(256) 
)' at line 4 

Pourquoi cet échec?

Répondre

0

Le problème est le nom de la colonne with. Changez le nom en quelque chose comme withValue.

CREATE TABLE pn_history(
member INT, 
action INT, 
withValue INT, 
timestamp DATETIME, 
details VARCHAR(256) 
) 
0

L'horodatage est un mot clé (il s'agit d'un type de données dans mysql) qui peut vous causer des problèmes.

Je suggère d'utiliser un nom différent, mais s'il doit être nommé timestamp, essayez d'utiliser des guillemets pour le citer.

2

Les attributs 'with' et 'timestamp' sont reserved words dans MySQL. Donc, pour obtenir ce travail, vous auriez besoin d'échapper à chacun:

CREATE TABLE pn_history(
member INT, 
action INT, 
`with` INT, 
`timestamp` DATETIME, 
details VARCHAR(256) 
) 

Vraiment bien, vous devez envisager de changer les noms de vos colonnes identifiers. En savoir plus sur MySQL Reserved Words En réalité, TIMESTAMP n'est pas un mot réservé. La documentation dit:

MySQL permet à certains mots-clés à utiliser comme identifiants sans guillemets parce que beaucoup de gens les utilisés précédemment. Des exemples sont ceux dans la liste suivante:

  • ACTION
  • BIT
  • DATE
  • ENUM
  • NO
  • TEXT
  • `TIME
  • TIMESTAMP

Donc je suppose que cela signifie que la pression des pairs a TIMESTAMP de la liste des mots réservés. Hah!