概要
Rustでsqlxを使っていた際に、下記のコードだと./migrations
ディレクトリに存在するALTER TABLE
を用いたSQLファイルが実行されなかったが、なんとか動作するようにはなったので、備忘録としてとどめておく。
ちなみにsqlx migrate run
コマンドだと動作した。
sqlx::migrate!()
.run(&pool)
.await
.expect("Cannot run migration");
ALTER TABLE questions ADD COLUMN account_id SERIAL;
開発環境
- PostgreSQL: 13
- Rust: 1.62
回避策
migrate!
マクロの引数に、migrations
ディレクトリのパスを指定すると動作するようになった。
sqlx::migrate!("./migrations")
.run(&pool)
.await
.expect("Cannot run migration");
公式ドキュメントにもある通り、デフォルトでのパスが./migrations
になっているので、本来は指定しなくても良いはずだが、試しに追加してみたところ動いた。
原因はまた時間があるときに調査して、PRを投げておく。