H2: comment savoir si la table existe?

Je suis en train d'écrire du code Java qui vérifie si un H2 table existe: si elle n'existe pas, il exécute pour la première fois un CREATE TABLE requête qui crée la table avant de poursuivre plus loin.

J'ai suivi les conseils en Google Groupes en question mais il ne fonctionne tout simplement pas.

Si j'exécute la requête suivante:

SELECT COUNT(*) AS count FROM information_schema.tables WHERE table_name = 'word_types'

- Je obtenir une seule ligne avec un COUNT champ qui a une valeur de 0, ce qui indique que la word_types tables n'existe pas. Mais quand je le lance:

SELECT * FROM word_types

Je serai de retour 0 jeux de résultats, mais le SQL frontend/GUI que j'utilise me montre tous les champs/colonnes qui existent dans le word_types table. En outre, lorsque je de forage vers le bas dans ma base de données de la liste des tables disponibles (à l'aide de la même interface graphique), je vois word_types existe.

Alors, quelle est la bonne requête à utiliser lorsque vous essayez de déterminer si un H2 table existe ou pas? À l'aide v1.3.173. Merci à l'avance!

  • Il pourrait être un des majuscules/minuscules problème lors de l'interrogation de la table système. Essayez de nouveau avec la basse fonction.
  • Pourquoi ne pas utiliser CREATE TABLE IF NOT EXIST myTable? Quelle est votre logique, vous vérifiez à chaque fois avant de faire une requête ou une seule fois lorsque l'application démarre?
  • Bien votre approche fonctionne très bien pour moi - si la première requête renvoie 0, que la deuxième donne un code d'erreur Table doesn't exist
  • Merci @DanBracuk (+1) - où dois-je appliquer la fonction lower? Pouvez-vous fournir un exemple de code? Merci encore!
  • Merci @Admettre (+1) - n'est pas une mauvaise suggestion et si tout le reste échoue ici, je pourrais aller avec elle. Ma logique est de vérifier une fois à l'application de démarrage.
  • Que c'est certainement une façon d'aller. Puisque vous allez faire juste une DB appel et si la table n'existe pas, rien ne se passera.

InformationsquelleAutor | 2013-10-22