Как увидеть все таблицы в моей базе данных h2 на localhost: 8082?
Я использую JDBC и создал базу данных h2, называемую usaDB, из sql script. Затем я заполнил все таблицы с помощью jdbc.
Проблема в том, что после подключения к usaDB на localhost: 8082 я не вижу слева
мои таблицы. Существует только база данных INFORMATION_SCHEMA и rootUser
, которые я указал на создание usaDB.
Как просмотреть содержимое таблиц в моей базе данных h2?
Я попробовал запрос SELECT * FROM INFORMATION_SCHEMA.TABLES
.
Но он вернул много имен таблиц, кроме тех, что я создал. Мой снимок:
![введите описание изображения здесь]()
Ответы
Ответ 1
У меня была такая же проблема, и ответ кажется действительно глупым: когда вы вводите имя своей базы данных, вы не должны добавлять суффикс ".h2.db", например, если у вас есть db file " D:\somebase.h2.db" ваша строка подключения должна выглядеть как " jdbc: h2: файл:/D:/somebase". Другим способом jdbc создает новый пустой файл базы данных с именем " somebase.h2.db.h2.db", и вы видите, что видите: только системные таблицы.
Ответ 2
Вы можете использовать команду SHOW
:
![grammar]()
С помощью этой команды вы можете отобразить схемы, таблицы или столбцы таблицы. например:.
SHOW TABLES
Ответ 3
Эта проблема заставила меня покрутить, и помимо этой страницы я прочитал много (многих!) других, пока не решил.
Мой пример использования должен был увидеть, как проект SpringBatch, созданный в STS с использованием:: Spring Boot:: (v1.3.1.RELEASE), будет вести себя с базой данных H2; чтобы сделать последнее, мне нужно было иметь возможность запускать консоль H2, а также запрашивать результаты DB пакетного запуска.
Вот что я сделал и узнал:
-
Создал веб-проект в STS, используя Spring Boot:
![введите описание изображения здесь]()
- В pom.xml добавлено следующее:
![введите описание изображения здесь]()
- В конфигурационный файл Spring добавлен следующий файл:
Это устраняет недостатки веб-проекта в STS. Если вы запустите проект сейчас, вы можете получить доступ к консоли H2 следующим образом: http://localhost:8080/console
![введите описание изображения здесь]()
-
Теперь создайте проект SpringBatch в STS следующим образом (альтернативный метод создает другой шаблон, отсутствующий в большинстве классов для сохраняющихся данных. Этот метод создает 2 проекта: один полный, а другой - начальный. В следующих.):
![введите описание изображения здесь]()
- Проект SpringBatch, созданный с использованием STS, использует базу данных H2 в памяти, которая ЗАКРЫВАЕТСЯ после завершения работы приложения; после его запуска вы можете увидеть это в выводе журнала.
- Итак, нам нужно создать новый DataSource, который переопределяет значение по умолчанию, которое поставляется с проектом (если вам интересно, просто посмотрите на сообщения журнала, и вы увидите, что он использует источник данных по умолчанию... этот создано:
o.s.j.d.e. EmbeddedDatabaseFactory со следующими параметрами:
Запуск встроенной базы данных: URL= 'jdbc: hsqldb: mem: testdb', имя пользователя= 'sa')
- Итак, он запускается в памяти, а затем закрывает его. У вас нет шансов увидеть данные с помощью консоли H2; он пришел и ушел.
- Итак, создайте DataSource следующим образом:
![введите описание изображения здесь]()
- Конечно, вы можете использовать файл свойств для сопоставления параметров и профилей для разных экземпляров DataSource... но я отвлекаюсь.
- Теперь убедитесь, что вы установили бит, на который указывает красная стрелка на изображении, в место на вашем компьютере, где файл может быть сохранен.
- Запуск SpringBatch (Complete project) теперь должен иметь файл db в этом месте после его запуска (сохраняющиеся данные Person)
- Запустите веб-проект, настроенный ранее на этих шагах, и вы: =) увидите свои данные и все данные пакетного задания и шага (et voila!):
Болезненный, но полезный. Надеюсь, это поможет вам на самом деле BOOTSTRAP: =)
Ответ 4
Я точно столкнулся с этой проблемой.
Из того, что вы описали, я полагаю, что вы подключаете свой jdbc к "реальному" h2-серверу, но вы подключаетесь к веб-приложению к базе данных по неправильному режиму (режим встроенной памяти, aka h2mem
). Это означает, что h2 создаст новую базу данных в памяти вместо использования вашей истинной базы данных, хранящейся в другом месте.
Пожалуйста, убедитесь, что при подключении к этой базе данных вы используете режим Общий H2 (Сервер), NOTGeneric H2 (Embedded). Вы можете обратиться к рисунку ниже.
![enter image description here]()
Ответ 5
Это старый вопрос, но я столкнулся с той же проблемой. В конце концов я узнал, что по умолчанию JDBC-URL указывает на тестовый сервер, а не на мое приложение. После исправления я мог получить доступ к правильной БД.
Я попробовал как с Generic H2 (Embedded), так и с опциями Generic H2 (Server), оба работали до тех пор, пока JDBC URL: предоставлен правильно.
![введите описание изображения здесь]()
Ответ 6
Версия файла jar и установленной базы данных h2 должна быть такой же.
Ответ 7
В моем случае проблема была вызвана тем, что я не задал имя пользователя h2, пароль в java. К сожалению, Spring не отображал мне никаких ошибок, поэтому было нелегко понять. Добавление этих строк в метод dataSource помогло мне устранить проблему:
dataSource.setUsername("sa");
dataSource.setPassword("");
Кроме того, я должен был указать схему при создании таблиц в schema.sql
Ответ 8
Выбор общего H2 (сервера) для меня. Мы искушаем использовать Default Generic H2 (Embedded), который является неправильным.
Ответ 9
Если в случае, если вы создали и заполнили таблицу базы данных H2 с использованием зависимости maven при весенней загрузке, измените URL JDBC на jdbc:h2:mem:testdb
при подключении к H2 с помощью веб-консоли.