Unity postgresqlでデータを取得したい
Q&A
Closed
解決したいこと
Unityで実装したAndroid用アプリで、Dockerを用いた仮想コンテナにあるPostgreSQLのデータベースからデータを取得したいが、エラーが発生します。
分かる方がいましたら教えてください。
該当するソースコード
void Start()
{
//実行環境
string connectionString =
//コンテナに接続後[hostname -i]で確認したiPアドレス
"Server=****;" +
"Port=5432;" +
"Database=postgres;" +
"User ID=****;" +
//[-e POSTGRES_PASSWORD=]で設定したパスワード
"Password=****;";
try
{
var dbcon = new NpgsqlConnection(connectionString);
dbcon.Open();
NpgsqlCommand dbcmd = dbcon.CreateCommand();
// SELECT文
string sql =
"SELECT *" +
"FROM test"; //test テーブル
dbcmd.CommandText = sql;
NpgsqlDataReader reader = dbcmd.ExecuteReader();
while (reader.Read())
{
// testテーブルにあるカラム名「name」のデータ取得
string Name = (string)reader["name"];
//デバック
text.SetText(Name);
}
// clean up
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbcon.Close();
}
catch (System.Exception e)
{
text.SetText(e.ToString());
}
}
自分で試したこと
・postgres.confでlisten_addresses = '*'の確認とportの部分のコメントアウトを
外した
・pg_hba.confで外部接続用のmethodをmd5に変更
・もう一つ別のコンテナにログインして
psql -U [ロール名] -h [接続先iPアドレス] -p 5432 -d postgresでの
外部からのデータベース接続ができることを確認済み
(22/10/24 追記: 172.から始まるipアドレスのため外部からの接続ではなかった?)
追記(22/10/24)
自身がネットワーク関連があまり得意な方ではないため
そもそもdockerでの環境構築がしっかりできていない可能性がある
何が間違っていて、何が足りないのかわからないため、今回行った環境構築の手順を以下に示します。
実行環境
パソコン:dockerでpostgesqlのデータベースを用意
スマホ :Unityで実装したアプリでそのデータベースからデータを取得
Wi-Fi :同じところに接続
dockerでの環境構築の手順
1.docker network create --driver bridge --subnet 192.[A].[B].0/24
--gateway 192.[A].[B].1 bridge2
2.docker run -d --net=bridge2 --ip=192.[A].[B].10 --name db3 -p 5432:5432
-p POSTGRES_PASSWORD=**** postgres
3.postgres.confでlisten_addresses = '*'の確認とportの部分のコメントアウトを外
した
4.pg_hba.confで全てのmethodの部分をmd5に変更
5.postgresqlでテスト用にテーブルを作り、適当にデータを作成
6.コンテナを一度停止させ、再度起動した
※[A]、[B]はそれぞれ同じ数値が入る
この記事を投稿した時(22/10/21)は手順1はやっていなかったので
改めて上記の手順で試したが、エラーは変わらなかった。
DBeaverでlocalhost(あるいは127.0.0.1) port:5432でやったら接続できたが、
192.[A].[B].10 port:5432だと接続できなかった。
最後に
少しでも気になることがあれば教えてください。
お願いします。