C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: サーバ公開後mysqlが利用できない件


(過去ログ 143 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■84090 / inTopicNo.1)  サーバ公開後mysqlが利用できない件
  
□投稿者/ ruru (13回)-(2017/05/15(Mon) 11:15:46)

分類:[.NET 全般] 

お世話になります。ご教示願います。

asp.net webdeveloper 2010を利用し、レンタルサーバで使用可能なmysqlでの
テストを行っています。

接続を行うために、mysql-connector-net-6.9.9をDLしました。

 Imports MySql.Data.MySqlClient

これでlocalhost上では接続を行う事が出来ましたが、
サーバに公開後は、接続時下記のメッセージが表示されます。

ファイルまたはアセンブリ 'MySql.Data, Version=6.9.9.0,Culture=neutral, PublicKeyToken=c5687fc88969c44d'、
またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

サーバ上にはmysql-connector-net-6.9.9が存在しないので読めないのかなと考えていますが、
この場合どのようにしたら、サーバ上でも使えるようになりますか?

引用返信 編集キー/
■84091 / inTopicNo.2)  Re[1]: サーバ公開後mysqlが利用できない件
□投稿者/ WebSurfer (1234回)-(2017/05/15(Mon) 12:18:50)
No84090 (ruru さん) に返信

> asp.net webdeveloper 2010を利用し、レンタルサーバで使用可能なmysqlでの
> テストを行っています。

ASP.NET + MySQL が使えるレンタルサーバーですと、Connector/NET はインストール
済みかもしれませんので(自分の使っているレンタルサーバーがそうです)、まずは
レンタルサーバー会社に Connector/NET がインストール済みか否か、インストールし
てある場合はそのバージョンを問い合わせてください。

Connector/NET がインストールしてあると、普通は GAC に MySql.Data アセンブリが
登録され、machine.config にそれを使うための設定が行われるはずです。

質問者さんの開発環境では 6.9.9 だそうですが、レンタルサーバーでそれと違うバー
ジョンのものが使われている場合は参照設定などを変更する必要がありそうです。

レンタルサーバーに Connector/NET がインストールしてない(サーバーの GAC には
MySql.Data アセンブリは登録されていない)場合は、開発マシンの MySql.Data.dll
をサーバーにアップしたアプリの bin フォルダにコピーすれば使えるはずです。

Connector/NET のインストーラーが自動的に行ってくれる DbProviderFactories 他の
machine.config 内の設定は、アプリの web.config でも可能ですので、開発マシンの
machine.config の設定を参考に必要に応じてやってみてください。

ところで、6.9.9 は .NET 3.5 以下では使えませんが、そこのところはいいのですよね?

引用返信 編集キー/
■84092 / inTopicNo.3)  Re[2]: サーバ公開後mysqlが利用できない件
□投稿者/ ruru (14回)-(2017/05/15(Mon) 13:54:17)
WebSurfer様

早速のお返事ありがとうございます。
サポートには早速問い合わせをさせていただきました。

6.9.9にこだわりがあるわけではなく、ただ接続が出来ればよいと考えておりましたので
もしレンタルサーバに機構が存在するのであれば、あわせることで対応いたします。

GACは初めて聴く言葉でしたので、WIKI等を見てみました。
バージョンが違うことで動作しない事がある旨書いてあったので、以後注意いたします。

サポートから回答が来る前に、興味本位でbinにdllをUPしてみましたが、
同じメッセージがでましたので、これはレンタルサーバにconnector/NETがあるけれど
バージョンが違うので参照出来ないよ、という事なのかなあと考えております。

尚、Frameworkは4.0/4.5でした。こういったところまでご指摘くださりありがとうございます。

サポートから回答が来て、上手く稼働いたしましたら、解決済みにいたします。
引用返信 編集キー/
■84095 / inTopicNo.4)  Re[3]: サーバ公開後mysqlが利用できない件
□投稿者/ ruru (16回)-(2017/05/15(Mon) 18:39:15)
お世話になります。現状報告となります。

レンタルサーバには、Connector/NETがインストールされており、
バージョンは6.6.5となっておりました。

早速6.6.5を探したのですが、見つからず、6.6.7しかありませんでした。
6.9.9をアンインストールし、6.6.7をインストールしなおしてテストしてみましたが
これでは動きませんでした。


―エラー内容―
ファイルまたはアセンブリ 'MySql.Data, Version=6.6.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'、
またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。


6.6.7では6.6.5の代わりにはなれないのでしょうか。
引用返信 編集キー/
■84096 / inTopicNo.5)  Re[4]: サーバ公開後mysqlが利用できない件
□投稿者/ WebSurfer (1235回)-(2017/05/15(Mon) 19:11:43)
No84095 (ruru さん) に返信

> 6.6.7では6.6.5の代わりにはなれないのでしょうか。

そういう話ではなくて、6.6.5 しか GAC にないレンタルサーバーの環境で、質問者さんの
アプリが 6.6.7 を使うように指定しているから、「読み込めませんでした。指定されたフ
ァイルが見つかりません」というエラーになっているように思えるのですが?
引用返信 編集キー/
■84102 / inTopicNo.6)  Re[5]: サーバ公開後mysqlが利用できない件
□投稿者/ ruru (18回)-(2017/05/16(Tue) 09:49:07)
WebSurfer様

お返事ありがとうございます。
理解できず困っておりますので、もう少しだけご教示お願い致します。

まず、6.6.7(或いは6.9.9でもよかったのか)は、6.6.5を含有しているという認識でよろしいでしょうか。
であるならば、参照設定を6.6.5に変える必要があるにつながりますが、その方法がわかりません。

machine.configのいくつかの箇所が6.6.7になっているのでそれ自体を6.6.5に修正し、公開しなおしましたが
依然として6.6.7を見に行ってしまいます。

以下に手順を記載します。

1.connector/NETをインストールする(6.6.7)
2.Visual Wev Developer 2010 Expressのソリューションエクスプローラーの参照設定を右クリックし、
参照の追加→.NETからMySql.Data(6.6.7)を追加
3.Importsして使用
4.公開


ご指摘をお願い致します。
引用返信 編集キー/
■84103 / inTopicNo.7)  Re[6]: サーバ公開後mysqlが利用できない件
□投稿者/ 魔界の仮面弁士 (1281回)-(2017/05/16(Tue) 10:08:33)
No84102 (ruru さん) に返信
> であるならば、参照設定を6.6.5に変える必要があるにつながりますが、その方法がわかりません。
過去バージョンのアーカイブはこちらにあります。
https://downloads.mysql.com/archives/c-net/


> machine.configのいくつかの箇所が6.6.7になっているのでそれ自体を6.6.5に修正し、
レンタルサーバー上の machine.config を修正はできないでしょう。
Web アプリの web.config を確認してみてください。


> それ自体を6.6.5に修正し、公開しなおしましたが
> 依然として6.6.7を見に行ってしまいます。

実行環境と開発環境のバージョンを一致させるのが最善とは思いますが、
どうしても異なるバージョンを使わねばならない事情がある場合は、
バージョンリダイレクトの設定を確認してみてください。

下記は mysql の話では無いですが、関連情報として:
http://d.hatena.ne.jp/atsukanrock/20090519/1242721158
http://www.atmarkit.co.jp/fdotnet/technology/idnfw11_04/idnfw11_04_02.html
引用返信 編集キー/
■84110 / inTopicNo.8)  Re[7]: サーバ公開後mysqlが利用できない件
□投稿者/ 渋木宏明 (11回)-(2017/05/16(Tue) 11:07:42)
>接続を行うために、mysql-connector-net-6.9.9をDLしました。

ダウンロードなんかしないで、素直に NuGet 参照をプロジェクトに追加すればいいんじゃないでしょうか。

引用返信 編集キー/
■84111 / inTopicNo.9)  Re[8]: サーバ公開後mysqlが利用できない件
□投稿者/ ruru (19回)-(2017/05/16(Tue) 11:30:37)
魔界の仮面弁士 様

お返事ありがとうございます。
過去バージョンのアーカイブより、6.6.5をDLしインストールしなおすことで
レンタルサーバ上で稼働が出来ました。ありがとうございます。


>>レンタルサーバー上の machine.config を修正はできないでしょう。
>>Web アプリの web.config を確認してみてください。

web.configは何度か確認をしているのですが、mysqlのバージョンのような記載がなく
何処を触ればよいかがわかりませんでした。
webconfigは2箇所に作成されており、
Accountフォルダ配下のものと、ソリューション配下の二つを確認しております。

今回は、6.6.5が(たまたま)存在したので事なきを得ましたが、
関連情報は参考にさせていただきます。ありがとうございます。




渋木宏明 様

お返事ありがとうございます。
ダウンロードするという固定概念がありましたが、Nugetという手法もあるのですね。
参考にさせていただきます。ありがとうございます。
解決済み
引用返信 編集キー/
■84113 / inTopicNo.10)  Re[6]: サーバ公開後mysqlが利用できない件
□投稿者/ WebSurfer (1236回)-(2017/05/16(Tue) 13:20:11)
No84102 (ruru さん) に返信

6.6.5 を使って解決したとのことですので、今さらながらのレスですが・・・

> まず、6.6.7(或いは6.9.9でもよかったのか)は、6.6.5を含有しているという認識でよろしいでしょうか。

含んでいるとかいないとか、そういう話ではないです。

前のレスでも書きましたが、6.6.5 しかないレンタルサーバーの環境で、質問者さんのアプリが
6.6.7 をロードするよう指定していたため、ロードできなかったことが問題だったのです。

言い方を変えると、レンタルサーバーには 6.6.5 しかないのだから、質問者さんのアプリからは
6.6.5 をロードするよう指定しないとダメということです。


> であるならば、参照設定を6.6.5に変える必要があるにつながりますが、その方法がわかりません。

質問者さんのレス、

> 2.Visual Wev Developer 2010 Expressのソリューションエクスプローラーの参照設定を右クリックし、
> 参照の追加→.NETからMySql.Data(6.6.7)を追加

・・・から、web アプリケーションプロジェクトで作っているのではないかと想像していますが、
その想像が当たっているとすると web.config には参照の設定はなくて、プロジェクトファイルに
あるはずです。

6.6.5 に変更するには、質問者さんが行ったように 6.6.5 の Connector/NET をインストールして
Visual Studio のソリューションエクスプローラで参照設定をやり直すのが確実です。

6.6.5 の Connector/NET をインストールしなくても、6.6.5 の MySql.Data.dll が入手できれば、
それを bin フォルダにコピーして、その .dll を参照設定に加えることでも大丈夫だと思います。


ちなみに、web サイトプロジェクトの場合は、参照設定で、例えば 6.9.9 の MySql.Data を追加
すると、web.config には以下の設定が追加されます。

<add assembly="MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>

運用環境でバージョンが異なる場合は Version を運用環境に合わせて変更するだけで済みます。


> machine.configのいくつかの箇所が6.6.7になっているのでそれ自体を6.6.5に修正し、公開しなおしましたが
> 依然として6.6.7を見に行ってしまいます。

machine.config を書き換えるなら、開発環境のものではなくて、レンタルサーバーのものを書き
換えないと意味がないですが、それはできないはずです。なので、前のレスで、

Connector/NET のインストーラーが自動的に行ってくれる DbProviderFactories 他の
machine.config 内の設定は、アプリの web.config でも可能ですので、開発マシンの
machine.config の設定を参考に必要に応じてやってみてください。

・・・と書きましたが、分からなかったでしょうか?

今回は、参照設定のやり直しだけで動くようになったとのことですが、DbProviderFactories や
フォーム認証関係のプロバイダなどが問題になるかもしれません。そのことは覚えておいた方が
よさそうです。
引用返信 編集キー/
■84117 / inTopicNo.11)  Re[7]: サーバ公開後mysqlが利用できない件
□投稿者/ ruru (20回)-(2017/05/16(Tue) 15:43:39)
WebSurfer 様
いつもありがとうございます。

>>前のレスでも書きましたが、6.6.5 しかないレンタルサーバーの環境で、質問者さんのアプリが
>>6.6.7 をロードするよう指定していたため、ロードできなかったことが問題だったのです。
>>言い方を変えると、レンタルサーバーには 6.6.5 しかないのだから、質問者さんのアプリからは
>>6.6.5 をロードするよう指定しないとダメということです。

何となくわかった気がします。
開発の為に6.6.7や6.6.9を入れるのと、レンタルサーバー上で動作させる為の
参照場所を6.6.5をするという行為は全く別という事だったのですね。
混同しておりました。


>>ちなみに、web サイトプロジェクトの場合は、参照設定で、例えば 6.9.9 の MySql.Data を追加
>>すると、web.config には以下の設定が追加されます。
>><add assembly="MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>

これがどうしても見つかりませんでした。
ソリューション全体で、検索をかけておりますが…。


>>Connector/NET のインストーラーが自動的に行ってくれる DbProviderFactories 他の
>>machine.config 内の設定は、アプリの web.config でも可能ですので、開発マシンの
>>machine.config の設定を参考に必要に応じてやってみてください。

仮に、現在connector/NET 6.6.7(6.9.9)を入れて開発し、レンタルサーバが6.6.5だった場合、

開発時は、machine.config内の設定を参照し、6.6.7(6.9.9)を利用し、テストを行う事が出来て、
公開後は、web.config内の設定にて、6.6.5を参照するように設定でき、
レンタルサーバに存在するconnector/NET6.6.5を利用し、mysqlが実行出来るという認識で宜しいでしょうか。

引用返信 編集キー/
■84118 / inTopicNo.12)  Re[8]: サーバ公開後mysqlが利用できない件
□投稿者/ 渋木宏明 (12回)-(2017/05/16(Tue) 16:49:54)
2017/05/16(Tue) 16:52:02 編集(投稿者)

> >>ちなみに、web サイトプロジェクトの場合は、参照設定で、例えば 6.9.9 の MySql.Data を追加
> >>すると、web.config には以下の設定が追加されます。
> >><add assembly="MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
>
> これがどうしても見つかりませんでした。
> ソリューション全体で、検索をかけておりますが…。

ダウンロードしたアセンブリを、単純に参照設定するだけでは追加されないです。
NuGet パッケージ参照を追加した時は自動的に↑のような設定が Web.config 追加されます。

だからイマドキ、アセンブリのダウンロードなんかしてないで NuGet で MySql.Data を追加すればいいと。。
NuGet パッケージが提供されているアセンブリを、あえて手動でダウンロードしてプロジェクトに参照追加するなんて、よっぽど限定的な環境じゃないと意味無いですよ。



引用返信 編集キー/
■84119 / inTopicNo.13)  Re[8]: サーバ公開後mysqlが利用できない件
□投稿者/ WebSurfer (1237回)-(2017/05/16(Tue) 16:51:30)
No84117 (ruru さん) に返信

> 開発の為に6.6.7や6.6.9を入れるのと、レンタルサーバー上で動作させる為の
> 参照場所を6.6.5をするという行為は全く別という事だったのですね。
> 混同しておりました。

理解が違うような気がするのですが・・・

Connector/NET の MySqlConnection とか MySqlCommand を使うには MySql.Data.dll を
サーバーのメモリにロードする必要があるのですが、アプリでバージョンが指定してある
と、そのバージョンの .dll を GAC と bin フォルダから探し、そこに指定したバージョ
ンの .dll がなければエラーになります。

今回のケースでは、GAC に 6.6.5 しかない環境で、アプリが 6.9.9 とか 6.6.7 をロード
するように指定していたので、指定したバージョンが見つからず、エラーになったという
ことです。

ASP.NET の場合、ランタイムがどこからどのように .dll を探すかは以下の記事が参考に
なると思います。

ASP.net assembly loading from GAC or Bin
https://blogs.msdn.microsoft.com/pranav_rastogi/2010/10/17/asp-net-assembly-loading-from-gac-or-bin/


> これがどうしても見つかりませんでした。
> ソリューション全体で、検索をかけておりますが…。

先のレスでも書きましたが、Web アプリケーションプロジェクトで作っているのではない
ですか? <add assembly= ... > が web.config に追加されるのは Web サイトプロジェ
クトの場合なのですが。

Web アプリケーションプロジェクトと Web サイトプロジェクトの違いがわかりますか?

Web アプリケーション プロジェクトと Web サイト プロジェクト
https://msdn.microsoft.com/ja-jp/library/dd547590(v=vs.100).aspx


> 仮に、現在connector/NET 6.6.7(6.9.9)を入れて開発し、レンタルサーバが6.6.5だった場合、
>
> 開発時は、machine.config内の設定を参照し、6.6.7(6.9.9)を利用し、テストを行う事が出来て、
> 公開後は、web.config内の設定にて、6.6.5を参照するように設定でき、
> レンタルサーバに存在するconnector/NET6.6.5を利用し、mysqlが実行出来るという認識で宜しいでしょうか。

それは分かりません。

差分の機能を利用していて、バージョンが下がるとその機能がなくなるということであれば当然ダメ
ですが、そうでなければ問題ないかもしれない(あくまで、かもしれないレベル)という感じです。

可能であれば開発環境と運用環境のバージョンを合わせるべきです。
引用返信 編集キー/
■84120 / inTopicNo.14)  Re[9]: サーバ公開後mysqlが利用できない件
□投稿者/ ruru (21回)-(2017/05/16(Tue) 18:04:29)
渋木宏明 様
お返事ありがとうございます。

今後はご教示いただいた方法を真っ先に試すようにします。



WebSurfer 様
たびたび、解説をしていただきありがとうございます。

正直なところ、仰る文言をそのまま素直に受けて、
わかったような気になっているレベルだとは思いますが、
少しずつ理解していこうと思います。

>>Web アプリケーションプロジェクトと Web サイトプロジェクトの違いがわかりますか?
全くわかっていませんでした。
頂いた資料と、このスレを何度もを読んで出直してきます。



有用な回答をたくさんいただき誠にありがとうございます。
本件の主題である件に関して言えば、既に解決しておりますので、
解決済みとさせていただきます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -