Открыть оболочку базы данных из муравейной задачи?
Я работал над проектом Python/Django и только что обнаружил команду "./manage.py dbshell". Он читает ваш файл конфигурации для учетных данных базы данных и запускает оболочку базы данных для вас.
Под капотом Django используется функция Python os.execvp (http://docs.python.org/library/os.html#os.execvp). Я не смог найти в Java/Ant ничего подобного, но обнаружил, что вы можете перенаправить запущенный процесс на ваш TTY (mysql> tty
), но попытка создать задачу для этого, похоже, не работает.
<target name="test">
<exec executable="/bin/sh">
<arg value="-c" />
<arg value="mysql -u foo -pbar > `tty`" />
</exec>
</target>
Когда я запускаю эту задачу, я не получаю оболочку базы данных, и в текущем каталоге создается файл с именем "не tty".
У кого-нибудь есть другие идеи о том, как я могу запустить интерактивный процесс из муравья?
1 ответ
Не уверен, что вас ждет весь путь, но вот начало интерактивности:
<target name="get-inputs" depends="confirm-props">
<input message="Enter your DB username:" addproperty="db.user.name" />
<input message="Enter your DB password:" addproperty="db.user.password" />
<input message="Enter DB Host:" addproperty="db.server" />
...call some other ant process...
</target>
И вот один для вызовов SQL:
<target name="db1">
<sql
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://${db.server}:3306/?useUnicode=true&characterEncoding=UTF-8"
userid="name"
password="password"
classpathref="service.classpath"
>
<transaction>
<![CDATA[
insert into foo (field1) values ('${foo-value}');
]]>
</transaction>
</sql>
</target>