Открыть оболочку базы данных из муравейной задачи? - PullRequest
1 голос
/ 28 июля 2011

Я работал над проектом 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 &gt; `tty`" />
    </exec>
</target>

Когда я запускаю эту задачу, я не получаю оболочку базы данных, и в текущем каталоге создается файл с именем «не tty».

У кого-нибудь есть другие идеи о том, как я могу запустить интерактивный процесс из муравья?

1 Ответ

2 голосов
/ 28 июля 2011

Не уверен, что вас ждет весь путь, но вот начало для интерактивности:

<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&amp;characterEncoding=UTF-8"
        userid="name"
        password="password"
        classpathref="service.classpath"
    >
        <transaction>
            <![CDATA[
            insert into foo (field1) values ('${foo-value}');
            ]]>
        </transaction>
    </sql>
</target>
...