2010-06-22 5 views
5

Je passe d'un backend MS Access à mySQL. Cela a l'habitude de travailler mais maintenant ne fonctionne pas et je ne peux pas comprendre le problème.Exception de date et d'heure dans une requête coldfusion dans cfc et mySQL

<cfargument required="false" name="expiry" type="any" default="" /> 


     <cfquery datasource='#arguments.dsn#'>  
      INSERT INTO users(expiry) 
      VALUES (<cfqueryparam value="#arguments.expiry#" cfsqltype="CF_SQL_TIMESTAMP"/>) 
     </cfquery> 

Le champ de base de données est définie sur datetime et par défaut NULL

L'argument est peuplé d'un champ de formulaire qui est soit vide, soit une date validée javascript. Il étouffe sur un champ vide.

+0

Quelle est l'erreur spécifique? – ale

+0

La cause de cette exception de sortie était que: coldfusion.runtime.locale.CFLocaleBase $ InvalidDateTimeException: on est une chaîne de date ou d'heure invalide .. – Saul

Répondre

6

Avant de jouer avec les paramètres de DSN, je voudrais aussi essayer de changer votre <cfqueryparam> à ce qui suit:

<cfqueryparam value="#arguments.expiry#" cfsqltype="CF_SQL_TIMESTAMP" null="#len(arguments.expiry) eq 0#" /> 

Cela va passer un vrai nul dans le cas où la valeur d'argument est un chaîne vide.

+0

Cela m'a réglé Adam, ty, le problème était mySQL pas mis une chaîne de longueur zéro comme null, Access n'a pas de tels scrupules !! – Saul

1

L'implémentation de CF du pilote JDBC pour MySQL ne gère pas très bien les dates NULL.

Vous devez ajouter un indicateur de configuration à vos paramètres de chaîne de connexion DSN (sous avancé) dans l'admin CF

& zeroDateTimeBehavior = convertToNull

Si vous redresser.

Rob