何か、思い当たる原因がありましたら、ご教示いただけないでしょうか?なお OS は Mac になります。
---
mysyncdb.sh
---
rm db.sqlite3
python manage.py sql yourappname
expect -c "
spawn python manage.py syncdb
expect Would; send \"yes\r\"
expect Username; send \"yourusername\r\"
expect Email; send \"\r\"
expect Password; send \"yourpassword\r\"
expect Password; send \"yourpassword\r\"
"
echo ""
---
実行結果、確認コマンド
---
$ mysyncdb.sh
...
$ # エラー無く完了する。
$ # けれども、DBを確認してみると ...
$ sqlite3 db.sqlite3
sqlite> select * from yourapp_user
sqlite> ; 何故か作成したはずの yourusername アカウントが存在しない。
どうぞ、よろしくお願いいたします。
パスワードは手入力になりますが、いまいまはヒアドキュメントを使って逃げております。
rm db.sqlite3 python manage.py sql yourappname python manage.py syncdb <<EOF yes yourusername <<
expectのスクリプトを下のようにしてみてください。
expect { spawn python manage.py syncdb expect \"Would\" { send \"yes\r\" } expect \"Username\" send \"yourusername\r\" } expect \"Email\" send \"\r\" } expect \"Password\" { send \"yourpassword\r\" } expect \"Password\" { send \"yourpassword\r\" }
expectのスクリプトを下のようにしてみてください。
expect { spawn python manage.py syncdb expect \"Would\" { send \"yes\r\" } expect \"Username\" send \"yourusername\r\" } expect \"Email\" send \"\r\" } expect \"Password\" { send \"yourpassword\r\" } expect \"Password\" { send \"yourpassword\r\" }
ご教示いただいた内容でも、改善することができなかたのですが、
幸い、下記の通り、改善策が見つかりました。
貴重なお時間をいただき、誠にありがとうございました。
答えは interact を追加し、標準入力に戻することでした。
原因は、上記のスクリプトでは yourpassword を2回打った段階で、
python manage.py syncdb コマンドが
エラーも出力せずに強制終了していたようでした。
正しいスクリプトは次のようになります。
rm db.sqlite3 python manage.py sql yourappname expect -c " spawn python manage.py syncdb expect Would; send \"yes\r\" expect Username; send \"yourusername\r\" expect Email; send \"\r\" expect Password; send \"yourpassword\r\" expect Password; send \"yourpassword\r\" interact " echo ""
ご教示いただいた内容でも、改善することができなかたのですが、
2014/07/16 17:44:29幸い、下記の通り、改善策が見つかりました。
貴重なお時間をいただき、誠にありがとうございました。