WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

MySQL をインストールしました

by WebSurfer 2011年4月23日 23:12

2017/1/30 追記:
2017/1/27 時点での最新版 MySQL Community Server 5.7.17 と Connector/Net 6.9.9 をWindows 10 Pre 64-bit PC にインストールした時の話を「MySQL をインストールしました(その 2)」に書きました。以下の記事は 2011 年 4 月とかなり昔の話で、それからやり方が変わってきていますのでご注意ください。

自分が使っているホスティングサービスでは SQL Server の他に MySQL もサポートしているので、SQL Server が容量オーバーになる前に MySQL の方にも DB を分散できないか検討するため、開発環境に MySQL をインストールしました。

MySQL

インストールしたのは、このポストを書いている時点での最新版 MySQL Community Server 5.5.11 と Connector/Net 6.3.6 です。Connector/Net 6.3.x は .NET 4 と VS2010 をサポートしています。詳細は MySQL のサイトの Documentation の中の Chapter 2 Connector/Net Versions を参照してください。

まず、MySQL の ダウンロードサイト で MySQL Community Server(サーバー本体)と Connector/NET(ADO.NET や SqlMembershipProvider 相当のライブラリが含まれている)をダウンロードしてきます。

インストールの際、MySQL Community Server の方は細かい設定のオプションがあって、インストーラが英文でいろいろ聞いてきますが、よく読んで進めて行けば問題なく完了すると思います。ファイアウォールのポートの穴あけはデフォルトではない(チェックを入れる必要がある)ので注意してください。インストールの際設定するパスワードは後で使いますので、覚えておいてください。

Connector/Net の方は何も設定する必要はなく、VS2008 と VS2010 の設定まで自動でやってくれます。インストールすると Visual Studio から MySQL に接続できるようになります。

下の画像は Visual Studio のサーバーエクスプローラから接続の追加を行うときに表示されるダイアログです。

接続する DB の種類の選択

上のダイアログで[OK]をクリックすると「接続の追加」ダイアログ(下の画像)が現れます。ここで、先に MySQL Community Server のインストールの際に設定した Server name, User name, Password を入力し、接続する Database name を選択します。

接続の追加

上のダイアログで[詳細設定(V)...]をクリックすると「詳細プロパティ」ダイアログ(下の画像)が表示されます。ここで、Character Set の設定を、先に MySQL Community Server のインストールの際に設定したものにします。インストールのとき Best Support For Multilingualism を選択していると UTF-8 になります(ここでは UTF-8 ではなく utf8 と記入してください)。その他の設定は、自分が試した限りではデフォルトのままで OK でした。

接続の詳細プロパティの設定

以上の設定が終了すると、SQL Server データベースと同様に、サーバーエクスプローラに MySQL データベースの接続が表示されます。

Visual Studio から MySQL への接続

ただし、SQL Server と同様に新規テーブルを作成することはできないようです。自分が試した限りですが、どうしても主キーの設定ができませんでした。

自分が知らないだけで、やり方はあるのかもしれませんが、どうしても Visual Studio からはできなかったので、コマンドラインから作りました。

コマンドラインからテーブルの作成

アプリケーションの作成には Connector/NET 関係の dll への参照の追加が必要です。ただし、レンタルサーバーなど、Connector/NET がインストールされてない場合など、参照設定ではダメな場合は bin フォルダに dll をコピーすることになります。

2013/10/1 追記:ダウンロードした msi インストーラーを使って Connector/NET をインストール すると、自動的(勝手)に GAC に dll が登録され、さらに machine.config ファイルの DbProviderFactories セクション に MySQL 用プロバイダの構成情報が登録されます。なので、開発マシンに Connector/NET をインストールした場合、開発マシンでは Bin に dll をコピーするとか、machine.config を修正することは不要です。

先にも書きましたが、Connector/NET 6.3.x は .NET 4 にも対応していますが、.NET 2.0, 3.0, 3.5 と .NET 4 では使う dll が異なるので注意してください。

デフォルト設定のままインストールすると以下のフォルダに v2.0 と v4.0 という 2 つのフォルダができます。

C:\Program Files\MySQL\MySQL Connector Net 6.3.6\Assemblies

ASP.NET 2.0, 3.0, 3.5 では v2.0 の中の MySql.Data.dll を、ASP.NET 4 なら v4.0 の中のものを bin フォルダにコピーしてください。

接続文字列は、上の画像の「詳細プロパティ」ダイアログの下のほうに表示される Visual Studio からの接続文字列を参考に以下のように web.config に設定します。パスワードの設定に注意してください。

<connectionStrings>
  <add name="MySQL" 
    connectionString="server=localhost;User Id=root;
        database=test;Character Set=utf8;Pwd=********" 
    providerName="MySql.Data.MySqlClient" />
</connectionStrings>

後は名前空間 MySql.Data.MySqlClient をインポートすれば、SqlConnection, SqlCommand などに代えて MySqlConnection, MySqlCommand を使えるようになります。以下のような感じです。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="MySql.Data.MySqlClient" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
  DataTable CreateDataTable()
  {
    string connString =
      ConfigurationManager.
      ConnectionStrings["MySQL"].ConnectionString;
    string query = "SELECT * FROM products";
    using (MySqlConnection connection = 
        new MySqlConnection(connString))
    {
      MySqlCommand command = 
        new MySqlCommand(query, connection);
      MySqlDataAdapter adapter = new MySqlDataAdapter();
      adapter.SelectCommand = command;

      DataSet ds = new DataSet();
      adapter.Fill(ds);

      return ds.Tables[0];
    }
  }
    
  void Page_Load(Object sender, EventArgs e)
  {
    if (!IsPostBack)
    {
      GridView1.DataSource = CreateDataTable();
      GridView1.DataBind();
    }
  }
    
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title></title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
  </div>
  </form>
</body>
</html>

Tags: ,

MySQL

DB Publishing Wizard

by WebSurfer 2010年9月23日 13:37

Microsoft SQL Server Database Publishing Wizard という、SQL Server データベース(スキーマとデータの両方) を共有ホスティングサービスのサーバなどに移設するためのスクリプトを自動生成してくれる便利なツールがあります。

このツールは Visual Studio に統合できるようになっていて、開発環境で App_Data フォルダに作ってユーザーインスタンスに接続しているデータベースにも対応できます。

Visual Studio 2008 にはこのツールは同梱されておらず、CodePlex の サイト からダウンロードしてインストールしましたが、Visual Studio 2010 では同梱されていました。

Database Publishing Wizard の起動

上の写真のように、サーバーエクスプローラの mdf ファイルを右クリックし、出てきたコンテキストメニューで Publish to Provider... をクリックするとウィザードが起動します。後はウィザードに従って進めていくだけですが、一応ポイントを書いておきます。

Database Publishing Wizard 開始画面

理由は分かりませんが、Visual Studio をデータベースに接続したまま進めるとエラーになることがあります。その場合はサーバーエクスプローラで切断してから進めてください。

うまくいけば「データベースの選択」画面が表示されます。Visual Studio のサーバーエクスプローラに表示されているデータベース以外に、SQL Server にアタッチされているデータベースも表示されます。

データベースの選択

「出力先の選択」画面でスクリプトファイルの名前と保存先を指定します。下の写真はデフォルト設定のままです。直接、ホスティングサービスのサーバーにパブリッシュできるオプションもあるようですが、やり方が分かりません。(笑)

出力先の選択

「パブリッシング オプションの選択」画面で、詳細設定オプションを選択します。パブリッシュするデータの型は、スキーマのみ、スキーマとデータ、データのみ、の 3 種類の中から選択できます。データを含めると、データが多い場合はスクリプトファイルのサイズがとんでもなく大きくなりますので、データが必要なければ「スキーマのみ」にしておいてください。

パブリッシング オプションの選択

以上で、指定したフォルダに指定したファイル名でスクリプトファイルが作成されます。下の写真は、作成されたスクリプトファイルを SQL Server Management Studio で開いたものです。ホスティングサービスの SQL Server でこのスクリプトを実行すれば、開発環境で作ったデーターベースと同じものが出来上がります。ちなみに、自分の場合スクリプトの実行は、ホスティングサービスが MyLittleAdmin を提供していますので、それを利用しています。

生成されたスクリプト

Tags:

SQL Server

Visual Studio の接続

by WebSurfer 2010年9月15日 22:13

ASP.NET ベースの Web アプリケーションの開発時に Visual Studio を SQL Server に接続する話です。

(2014/6/11 追記:以下は Visual Studio 2010 までの話です。ユーザーインスタンスが非推奨になり、開発用には、ユーザーインスタンスに代えて、SQL Server 2012/2014 Express LocalDB の使用が推奨されています。Visual Studio 2012 以降ではユーザーインスタンスではなく LocalDB に接続することになりますので注意してください)

Visual Studio のサーバーエクスプローラ(VWD Express 版はデータベースエクスプローラ)を開いてデータ接続のノードを右クリックし、「接続の追加」メニューを表示します。その中の「データソース(S):」の「変更」ボタンをクリックすると、下のような選択画面が表示されます。

Visual Studio からデータソースの選択

SQL Server を DB に利用する場合、選択は以下のとおりとなります。なお、VWD Express, VC# Express, VB Express では既定のインスタンスへの接続ができない(上の画像で「Microsoft SQL Server」のメニューがない)こと、SQL Server Express Edition 以外にはユーザーインスタンスの機能がないことに注意してください。

  1. App_Data フォルダに置いた DB のユーザーインスタンスに接続 ==> 「Microsoft SQL Server データベースファイル」を選択。
  2. ローカルまたはリモート SQL Server DB の既定のインスタンス(または名前つきインスタンス)に接続 ==> 「Microsoft SQL Server」を選択。

自分の場合、開発環境ではほぼ 100% 前者を利用しています。アタッチとかログインなどの設定をしなくても、Access と同様に簡単に SQL Server に接続して DB を扱えるようになりますので。

後者は、SQL Server の知識をある程度得てから、必要があれば利用する程度にした方がよさそうです。Visual Studio のウィザードを使うと、DB の作成からアクセスの設定まで簡単にできてしまいますが、中で何が起こっているか理解していないままやると、後で収拾がつかなくなる恐れがありますので。← 経験談(笑)

SQL Server Express Edition の場合、自動生成される接続文字列は以下のようになります。ご覧のとおり、前者はユーザーインスタンスが有効になっています。(注:SQL Server の Express 版をデフォルト設定でインストールすると「名前つきインスタンス」になります。以下の接続文字列で SQLEXPRESS は名前つきインスタンスの名前です)

Microsoft SQL Server データベース ファイル
---------------------------------------
Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|\<mdf ファイル名>;
Integrated Security=True;
Connect Timeout=30;
User Instance=True

Microsoft SQL Server
--------------------
Data Source=.\SQLEXPRESS;
Initial Catalog=<データベース名>;
Integrated Security=True

なお、ここに書いたことは、Visual Studio から DB への接続の話であり、アプリケーションから DB への接続とは違うことに注意してください。

アプリケーションから SQL Server の既定のインスタンスへの接続は、接続文字列の変更と SQL Server 側の設定でどのようにでもできます。

Tags:

SQL Server

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar