0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AIと一緒に】C# + ASP.NET Core の環境構築でハマりまくった Day6 Part2 〜.NETのバージョン沼にハマりながらもAPIサーバーを起動した話〜

0
Posted at

今日やったこと

  • psqlコマンドをPATHに通す
  • PostgreSQLにデータベース作成
  • NuGetパッケージのインストール
  • EF Core マイグレーション実行
  • dotnet build でビルド成功 !!🐶

psqlがPATHに通っていない

エラー

psql : The term 'psql' is not recognized as a name of a cmdlet...

フルパス指定では動くのに psql だけだと動かない状態。

# これは動く
& "C:\Program Files\PostgreSQL\18\bin\psql.exe" --version

# これはダメ
psql --version

対処法

PowerShellでユーザー環境変数のPathに追加する。

[System.Environment]::SetEnvironmentVariable(
  "Path",
  [System.Environment]::GetEnvironmentVariable("Path", "User") + ";C:\Program Files\PostgreSQL\18\bin",
  "User"
)

追加できたか確認:

[System.Environment]::GetEnvironmentVariable("Path", "User")
# 末尾に C:\Program Files\PostgreSQL\18\bin があればOK

VS Codeを完全に終了して再起動する。

タスクマネージャー(Ctrl+Shift+Esc)でCode.exeが残っていないか確認!!

再起動してもバックグラウンドで残ってたのでうまく読み込めてなかったみたい。

psql --version
# psql (PostgreSQL) 18.3

今日の躓き🐶

×で閉じるだけでは不十分だった。VS Codeはバックグラウンドで生きていることがあり、タスクマネージャーで完全終了するまでPATHが反映されなかった。

VS Codeのターミナルは起動時にPATHを読み込む。完全終了が必須。


SQLコマンドをPowerShellで打ってしまった

エラー

CREATE : The term 'CREATE' is not recognized as a name of a cmdlet...

原因と対処法

CREATE DATABASE はSQL文なのでpsqlの中で実行する必要があった。

# まずpsqlに接続
psql -U postgres -d postgres
-- postgres=# の状態でSQL文を実行
CREATE DATABASE debt_tracker;

-- データベース一覧で確認
\l

-- psqlを抜ける
\q

-- テーブル一覧
\dt  

-- データベース切り替え
\c  

ターミナルとpsqlの違い(ByClaude)

場所 プロンプト 使えるコマンド
PowerShell PS C:\...> Windowsコマンド
psql postgres=# SQLコマンド

dotnet-efが入っていない

エラー

指定されたコマンドまたはファイルが見つからなかったため、実行できませんでした。

対処法

dotnet tool install --global dotnet-ef
dotnet ef --version
# Entity Framework Core .NET Command-line Tools 10.0.7

dotnet-efとは(ByClaude)

dotnet ef はEF Core専用のCLIツールで、.NET SDKとは別にインストールが必要
Pythonの pip install と同じイメージ。コードに using を書くだけでは使えない。

NuGetパッケージのバージョン不一致

エラー

Microsoft.EntityFrameworkCore 10.0.7 は net8.0 と互換性がありません
パッケージ 'Npgsql.EntityFrameworkCore.postgreSQL' に使用できるバージョンがありません

原因

2つの問題が重なっていた。

  1. バージョン未指定でインストールすると最新版(10系)が入るが、プロジェクトは net8.0 なので互換性エラー

  2. パッケージ名の大文字小文字が違った
    postgreSQLPostgreSQL

そもそもnet9.0を8.0にして、とやっていたけどまたしてもVerエラー
Claude君いたからよかったけど、合わせるの大変!!

対処法

バージョンを明示してインストールし直す。
デフォだと最新の 10.0.7 がインストールされてしまった。

dotnet add package Microsoft.EntityFrameworkCore --version 8.0.0
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 8.0.0
dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0.0

NuGetパッケージとは(ByClaude)

言語 パッケージ管理 コマンド
JavaScript npm npm install xxx
C# NuGet dotnet add package xxx
Python pip pip install xxx

.NETとEF Coreのバージョン対応表

.NETバージョン EF Coreバージョン
net8.0 8.x.x
net9.0 9.x.x
net10.0 10.x.x

最終確認

dotnet build
ビルドに成功しました。
0 個の警告
0 エラー

やっとできた・・・!!

今日の躓きまとめ🐶

エラー 原因 対処
psqlが認識されない PATHが通っていない 環境変数に追加 + VS Code完全再起動
CREATEが認識されない psqlの外でSQL文を打った psqlに入ってから実行
dotnet efが見つからない ツール未インストール dotnet tool install
バージョン互換性エラー 最新版が自動で入った --versionで明示

コード自体は間違っていなかった。
業務でも環境構築やると 僕だけのエラー がでてたなぁ・・・
一個ずつ潰していけば必ず動くのだろうけど切り分けも大変だったりするので、経験値増えれば解消するといいな~。

次回予定🐇

マイグレーション実行とAPIの動作確認へ
テーブルが実際にDBに作られる
SQLベタ打ちじゃないやつ

TIL / 使ったコマンド一覧

# PATH確認
[System.Environment]::GetEnvironmentVariable("Path", "User")

# PATHに追加
[System.Environment]::SetEnvironmentVariable(
  "Path",
  [System.Environment]::GetEnvironmentVariable("Path", "User") + ";C:\Program Files\PostgreSQL\18\bin",
  "User"
)

# psql接続
psql -U postgres -d postgres

# dotnet-efインストール
dotnet tool install --global dotnet-ef

# NuGetパッケージインストール
dotnet add package Microsoft.EntityFrameworkCore --version 8.0.0
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL --version 8.0.0
dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0.0

# ビルド確認
dotnet build

プロンプトだった 'postgres='

postgres=# ← スーパーユーザー(管理者)
postgres=> ← 一般ユーザー
-postgres → 今接続しているデータベースの名前
-= → 特に意味はなく区切り文字

今どのDBにいるか

# こうすると
psql -U postgres -d debt_tracker

# 接続しているDB名がプロンプトに反映される
debt_tracker=#
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?