Comment puis-je vérifier (My)SQL syntaxique
nous sommes actuellement en train de mettre en place de l'intégration de serveur et durant ce processus, nous avons mis en place de pré-engager les crochets sur le SVN pour que nos développeurs ne peuvent pas vérifier dans les fichiers qui sont syntaxiquement invalide (principalement PHP et XML).
Nous avons aussi un tas de .les fichiers sql (MySQL) que je voudrais à de la poussière. Malheureusement, Google n'a pas quelque chose d'utile pour cette tâche.
Des idées?
Exactement le même problème et le système doit faire face à des DDL (en fait les fichiers SQL sont tous DDL), et avec MySQL améliorations.
OriginalL'auteur n3rd | 2010-10-19
Vous devez vous connecter pour publier un commentaire.
La commercial version de MySQL Workbench est un vérificateur de syntaxe de MySQL états, mais bien sûr cela ne couvrirait que la base de données des aspects. Voir http://mysql.com/products/workbench/ (même si j'ai trouvé la légende dans l'index de l'aide de l'application gratuite).
OriginalL'auteur
Après la recherche d'un CLI outil pour la syntaxe peluchage dans Mysql à utiliser dans Jenkins et ne pas trouver quelque chose rapidement (ce Stackoverflow question est l'un des premiers résultats - LOL) je suis venu avec la solution suivante (OS: Linux, mais il devrait être possible avec Windows aussi):
Quelque chose comme la forme suivante:
(Pour vérifier les fichiers sql, vous pouvez utiliser le bouton "< nom de fichier.sql" à la place de-b -e "déclaration")
Si la syntaxe de la requête ne peut pas être analysé par mysql il affirme:
ERREUR 1064 (42000) à la ligne 1: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de " à la ligne 1
Seulement si la syntaxe est correcte, il tente d'exécuter la requête et de réaliser que la table n'existe pas, mais ce n'est pas intéressant plus:
À cet effet Erreur 1064 est la syntaxe non valide. Vous avez seulement besoin de créer un vide de test de la base de données parce que sinon, seules les erreurs avec un mal DE partie semble (ici, par exemple, la base de données est nécessaire afin d'obtenir une syntaxe valide vérifier le résultat: 'sélectionnez asdf de s où x et si;).
Autant que j'ai testé, il fonctionne très bien (Version de Mysql 5.5).
Ici une complète script bash vesion:
OriginalL'auteur
Ici est un validateur, qui est valide par rapport au SQL 92/99/2003 normes toutefois, le fait que vous mentionnez MySQL m'amène à croire que vous utilisez MySQL syntaxe spécifique dans vos requêtes SQL.
Une option est de passer à un agnostique approche dans le traitement avec votre couche de base de données, l'écriture agnostique code SQL. Vous aurez évidemment besoin d'entrer en contact avec Mimer pour voir si vous pouvez le prendre hors ligne et de les intégrer au sein de votre environnement CI.
Couple de "si" dans l'approche globale et c'est tout ce contingent sur le fait que vous êtes prêt/pouvoir dans l'état actuel d'écrire agnostique code SQL.
OriginalL'auteur
J'ai écrit un CLI outil de vérification de la syntaxe des fichiers SQL à l'aide de l'phpMyAdmin SQL analyseur: php-sqllint.
OriginalL'auteur