Вызов mysql.exe из Java - PullRequest
       29

Вызов mysql.exe из Java

1 голос
/ 20 февраля 2009

Я вызываю mysql.exe из Java для загрузки базы данных. Поскольку процесс просто зависает, мне нужно создать командный файл и передать имя пользователя и пароль.

Пример содержимого command.bat:

mysql --user="%1" --password="%2" mydatabase < myscript.sql

Проблема в том, что я не вижу вывод команды mysql, чтобы увидеть, были ли какие-либо ошибки. Они отображаются в командной строке, но я не могу записать их в файл для анализа или InputStream.

Как я могу увидеть вывод команды mysql?

ПРИМЕЧАНИЕ. Вызов mysql.exe напрямую из Java зависает, поскольку mysql не передает информацию в буфер.

ПРИМЕЧАНИЕ. Мы используем mysql.exe вместо JDBC, потому что нам нужно обновить такие вещи, как триггеры. Чтобы передать все операторы в БД, нам нужно было бы проанализировать все команды и передать их по одной за раз.

ПРИМЕЧАНИЕ. Это работающая база данных MySQL, которую необходимо обновить.

Ответы [ 4 ]

1 голос
/ 20 февраля 2009

Если вы обращаетесь к этой базе данных только из Java, лучшим решением будет Connector / MXJ . Это позволит вам просто сделать правильно сформированный вызов JDBC, и библиотека автоматически позаботится о запуске базы данных.

В основном, файл jar содержит экземпляр (или, для нескольких платформ, экземпляры) исполняемого файла сервера mysql. Он также содержит скелет, куда вы можете загрузить предварительно заполненные данные для вашей базы данных.

При первом доступе к соединению JDBC он извлечет нужный сервер mysql из jar и создаст базу данных в текущем каталоге (используя предварительно заполненные данные сверху). Любые изменения с этого момента будут постоянными, как и ожидалось.

Вот еще немного информации:

Запуск через JDBC

Запуск через объект Java

0 голосов
/ 02 июня 2013

Проблема в том, что я не вижу вывод команды mysql, чтобы увидеть, были ли какие-либо ошибки. > Они отображаются в командной строке, но я не могу записать их в файл для анализа или InputStream.

Используйте 2> yourfilename

1007 * Е.Г. *

mysql --user = "% 1" --password = "% 2" mydatabase myoutput.txt

должен захватывать STDERR (куда MySQL.exe отправляет свои выходные данные здесь)

* 1013 Е.Г. *

mysql --user = "% 1" --password = "% 2" mydatabase myoutput.txt 2> & 1

будет захватывать STDOUT и STDERR в одном файле (= myoutput.txt).

0 голосов
/ 20 февраля 2009

Вы должны посмотреть на Process Builder . Позволяет получить дескриптор потока ввода / вывода и потока ошибок.

0 голосов
/ 20 февраля 2009

Не уверен, почему вы не можете просмотреть его вывод. Попробуйте вывести его в файл, а затем одновременно используйте Java для чтения из файла.

Я сам не пробовал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...