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?

More than 1 year has passed since last update.

An error occurred using the connection to database '' on server 'localhost'.の対処

Last updated at Posted at 2023-02-04

ASP.NET COREマイグレーションエラーが発生

現在Blazorの学習を兼ねて友人から依頼されたデータベースアクセスのアプリケーションを作成しています。手始めにDBアクセスにEntity Framework Coreを使用してみたのですが、表題のエラーが発生しました。結構あっけなく解決できたのですが、意外なところで見落としがちなことでしたので誰かの解決のヒントになることを期待して記事にします。(備忘録としても)

前提

開発環境

  • MacOS 13.1
  • .Net 6.0.405
  • Visual Studio Code 1.75.0
  • MySQL 8.0.32
  • Microsoft.EntityFrameworkCore 7.0.2
  • Microsoft.EntityFrameworkCore.Design 7.0.2
  • Microsoft.EntityFrameworkCore.SqlServer 7.0.2
  • Pomelo.EntityFrameworkCore.MySql 7.0.0

Dockerは使用せずローカルにて環境構築を実施。
また、dotnet ef migration addを実行して、マイグレーションフォルダは作成済み。
使用するデータベースも作成済み。(他のMySQLとポートが被らないように ポートは3307を使用)

著者のスキル

  • PHP/Laravel歴が最も長い(3年程度ですが…)
  • C#はこの1年間、業務で使用(レガシー技術 Web Formsで使用)
  • キャッチアップも兼ねてBlazorを学習中(JS書きたくないから)

初心者なので生暖かく読んで頂けると幸い。

発生したエラー

マイグレーションフォルダも作れたし、dotnet ef migration addでデータベースとテーブルを作っちゃうぞっと…は?
image.png
どうやらデータベース接続できないと言ってるようだ…(なんでや!)
接続文字列も設定できていると思うのだが…

Program.cs
var connectionString = "server=localhost;user=root;password=12345678;database=hoge";

原因

エラー文中のconnection to databaseを見て思ったのだが、そもそもDBが空ってどういうことなのかと。
ふと思いついたのが別アプリ用のDockerでポート3306を使用しているため、今回のDBは前提条件で書いたように3307を使用している…つまりポート番号を指定してあげれば…

顛末

Program.cs
var connectionString = "server=localhost;user=root;port=3307;password=12345678;database=hoge";

port=3307を接続文字列内で指定。これで後はDBアップデートのコマンドdotnet ef database updateを叩けば…
image.png
やったぜ

おわりに

改めてエラー文を読むと解決の糸口になりますね。今回の例だと直接原因が書かれている訳ではないのですが、DBに接続できていない→設定が間違っているというひらめき(大袈裟)に繋がりました。
ローカル環境でMySQLを構築したのでデフォルトポート番号3306が空いていると勘違いしていた結果がこれだよ!
複数のDB環境をローカルで構築する時のポート番号管理ってどうすればよいのか…もっと調査、勉強をしないとなあ…

おしまい。

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?