2010-01-06 2 views
0

Je veux faire Restful - Web Service en utilisant netbean 6.5, glassfish V2, et je fais déjà table et la relation entre la table. Mais quand je veux tester reposant Webservice, une table il montreHTTP Status 500

HTTP Status 500 - 

type Exception report 

message 

descriptionThe server encountered an internal error() that prevented it from fulfilling this request. 

exception 

Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (04/11/2008))): oracle.toplink.essentials.exceptions.DatabaseException 
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'E' in 'field list' 
Error Code: 1054 
Call: SELECT Id, MobileNumber, Country, First_Name, E-mail, Address, Identity, Zip, Last_name, City, State, Position FROM employee_table WHERE (Id = ?) 
    bind => [1] 
Query: ReadObjectQuery(ws.EmployeeTable) 

note The full stack traces of the exception and its root causes are available in the Sun Java System Application Server 9.1_02 logs. 

mais une table fonctionne. Est-ce que quelqu'un savait ce qui cause ce problème et comment gérer ce problème? THX.

Thx à Andrew Medico, et Jim Ferrans

je change tout mon E-mail dans un message électronique. et je n'oublierai pas de ne pas ajouter "-" dans DB. thx

Répondre

1

Vous devez indiquer le nom de la colonne "E-mail" afin que l'analyseur SQL l'accepte. Un tiret non protégé/échappé est l'opérateur de soustraction dans SQL, donc "E-mail" sans guillemets signifie que vous demandez au serveur SQL le résultat de la soustraction des colonnes nommées "E" et "mail".

SQL appropriée serait:

SELECT Id, MobileNumber, Country, First_Name, `E-mail`, Address, Identity, Zip, Last_name, City, State, Position FROM employee_table WHERE (Id = ?) 
+0

Thx ça marche maintenant. Après avoir changé tous les e-mails en email. – Huuhaacece

+0

Remarque backtick-escaping est un MySQLism non standard. Selon l'ANSI SQL, les guillemets doubles doivent être utilisés. Ce comportement peut être obtenu en définissant le ANSI_QUOTES SQL_MODE. – bobince

1

Vous avez un identifiant illégal dans une requête SQL ("E-mail"). La suggestion d'Andrew de le citer est la bonne solution si c'est le nom de la colonne. Vous avez peut-être mal orthographié dans la requête si.

+0

Qu'est-ce que vous voulez dire que je dois changer e-mail en autre chose? – Huuhaacece

+0

Cela dépend du nom de votre colonne dans le schéma SQL. Si c'est "E_mail" par exemple, il vous suffit de corriger l'orthographe dans votre requête. –