2010-09-24 10 views
1

Il ya quelques jours, j'ai demandé un question à propos de mon problème et il m'a été conseillé d'utiliser la fonction CONCAT_WS. J'utilise CONCAT_WS sur ma base de données mysql locale et cela fonctionne parfaitement. Mais il ne fonctionne pas sur le serveur (application hébergée) et génère l'erreur suivante.MySQL: la fonction CONCAT_WS fonctionne sur le serveur local mais pas sur le serveur

test.CONCAT_WS FONCTION n'existe pas

Ici test dans la chaîne d'erreur est mon nom de base de données sur le serveur.

Ma requête est comme ceci:

SELECT * FROM patient WHERE CONCAT_WS (',', LastName,FirstName,BirthDate) NOT IN ('Abdul,Quddus,2000-09-30','Wasim,Akram,1993-09-12'); 

Quelqu'un peut-il me dire le problème ou me suggérer une autre solution en question posée liée ci-dessus?

Merci

Répondre

4

La meilleure façon de le réparer est en supprimant l'espace entre le nom de la fonction et la parenthèse, à savoir CONCAT_WS(...) au lieu de CONCAT_WS (...).

De l'MySQL Manual:

Par défaut, il doit y avoir pas d'espace entre le nom de la fonction et la parenthèse suivre. Cette aide l'analyseur syntaxique MySQL à distinguer entre les appels de fonction et les références aux tables ou colonnes qui ont le même nom que la fonction .

...

Vous pouvez dire au serveur MySQL pour accepter les espaces après les noms de fonction par en commençant avec le --sql-mode = option IGNORE_SPACE.

En outre, ce comportement dépend de la version MySQL, c'est pourquoi il fonctionne sur un serveur et ne fonctionne pas sur une autre, citation de la page de manuel « Function Name Parsing and Resolution »:

Le nombre de Les noms de fonction affectés par IGNORE_SPACE a été réduit de manière significative dans MySQL 5.1.13, de environ 200 à environ 30.

+0

+1 travail Nice. Merci – NAVEED