データベース接続のトラブルシューティング

最終更新日 : 2021年12月20日

Dreamweaver で権限の問題、Microsoft エラーメッセージおよび MySQL エラーメッセージのトラブルシューティングを実行します。

Dreamweaver 以降では、ユーザーインターフェイスが簡素化されています。 そのため、この記事で説明されているオプションの一部が Dreamweaver 以降には存在しない場合があります。 詳しくは、こちらの記事を参照してください。

権限の問題のトラブルシューティング

最も一般的な問題の1つは、フォルダーまたはファイルの権限が不十分であることです。 データベースがWindows 2000またはWindows XPコンピューターに配置されており、webブラウザーまたはLive viewで動的ページを表示しようとするとエラーメッセージが表示される場合、そのエラーは権限の問題が原因である可能性があります。

データベースにアクセスしようとしているWindowsアカウントに十分な権限がありません。アカウントは、匿名Windowsアカウント(デフォルトでは、IUSR_computername)か、ページが認証されたアクセス用にセキュリティ保護されている場合は特定のユーザーアカウントのいずれかである可能性があります。

webサーバーがデータベースファイルにアクセスできるように、IUSR_computernameアカウントに正しい権限を与えるために権限を変更する必要があります。さらに、データベースファイルが含まれているフォルダーも、そのデータベースに書き込むために特定の権限が設定されている必要があります。

ページが匿名でアクセスされることを意図している場合は、以下の手順で説明されているように、IUSR_computernameアカウントにフォルダーとデータベースファイルへのフルコントロールを与えてください。

さらに、データベースへのパスがUNC(\\Server\Share)を使用して参照されている場合は、共有権限がIUSR_computernameアカウントにフルアクセスを与えていることを確認してください。この手順は、共有がローカル Web サーバー上にある場合でも適用されます。

別の場所からデータベースをコピーする場合、コピー先フォルダーから権限を継承せず、データベースの権限を変更する必要がある場合があります。

データベースファイルの権限を確認または変更する(Windows XP)

コンピューターで管理者権限を持っていることを確認してください。
Windows Explorerで、データベースファイルまたはデータベースが含まれているフォルダーを見つけ、ファイルまたはフォルダーを右クリックして、プロパティを選択します。
「セキュリティ」タブを選択します。

この手順は、NTFS ファイルシステムを使用している場合のみ実行してください。 FAT ファイルシステムを使用している場合は、ダイアログボックスに「セキュリティ」タブが表示されません。

IUSR_computernameアカウントがグループまたはユーザー名一覧に表示されていない場合は、追加ボタンをクリックして追加してください。
ユーザー、コンピューター、またはグループの選択ダイアログボックスで、「詳細設定」をクリックします。

ダイアログボックスに詳細オプションが表示されます。

「場所」をクリックし、コンピューター名を選択します。
[今すぐ検索] をクリックして、コンピュータに関連付けられたアカウント名のリストを表示します。
IUSR_computernameアカウントを選択してOKをクリックし、再度OKをクリックしてダイアログボックスを閉じます。
IUSRアカウントにフル権限を割り当てるには、フルコントロールを選択してOKをクリックします。

データベースファイルの権限を確認または変更する(Windows 2000)

コンピューターで管理者権限を持っていることを確認してください。
Windows Explorerで、データベースファイルまたはデータベースを含むフォルダーを見つけ、ファイルまたはフォルダーを右クリックして、プロパティを選択します。
「セキュリティ」タブを選択します。
メモ

この手順は、NTFS ファイルシステムを使用している場合のみ実行してください。 FATファイルシステムの場合、ダイアログボックスにセキュリティタブは表示されません。

IUSR_computernameアカウントがファイル権限ダイアログボックスのWindowsアカウントに表示されていない場合は、追加ボタンをクリックして追加してください。
[ユーザー、コンピュータ、またはグループの選択]ダイアログで、[Look In]メニューからコンピュータ名を選択して、コンピュータに関連付けられたアカウント名のリストを表示します。
IUSR_computernameアカウントを選択して追加をクリックします。
IUSRアカウントにフル権限を割り当てるには、アクセスの種類メニューからフルコントロールを選択してOKをクリックします。

セキュリティを強化するため、 データベースが含まれている web フォルダーの読み取り権限を無効にする 権限を設定できます。フォルダーを参照することは 許可されませんが、web ページは引き続きデータベースにアクセスできます。

IUSR アカウントと web サーバー権限について詳しくは、 アドビサポートセンターの次のテクニカルノートを参照してください:

Microsoft エラーメッセージのトラブルシューティング

これらの Microsoft エラーメッセージは、 Microsoft Access や SQL Server などの Microsoft データベースシステムで Internet Information Server(IIS)を使用している場合に、サーバーから動的ページをリクエストしたときに 発生することがあります。

アドビ では、Microsoft Windows や IIS などのサードパーティソフトウェアについて 技術サポートを提供していません。この情報で問題が解決しない場合は、Microsoft の技術サポートに連絡するか、Microsoft サポート Web サイト(http://support.microsoft.com/)にアクセスしてください。

80004005 番のエラーについて詳しくは、Microsoft Web サイトの記事「Active Server Pages および Microsoft Data Access Components におけるエラー 80004005 のトラブルシューティング ガイド(Q306518)」(http://support.microsoft.com/default.aspx?scid=kb;ja-jp;Q306518)を参照してください。

[[参考]80004005—データソース名が見つからず、既定のドライバーが指定されていません]

このエラーは、 web ブラウザーまたはライブビューで動的ページを表示しようとしたときに発生します。エラー メッセージは、データベースと web サーバーによって異なる場合があります。エラーメッセージの その他のバリエーションには、次のものがあります:

  • 80004005—ドライバーの SQLSetConnectAttr は失敗しました

  • 80004005—一般的なエラー。レジストリキー 'DriverId' を開けません

    考えられるいくつかの原因と解決策を次に示します。

  • ページから DSN を検索できません。 Web サーバーとローカルマシンの両方で DSN が作成済みであることを確認してください。

  • DSN が、システム DSN としてではなくユーザー DSNとして設定されている可能性があります。 ユーザー DSN を削除して、システム DSN を作成し、置き換えてください。

ユーザー DSN を削除しないと、重複する DSN 名により新たに ODBC エラーが発生します。

Microsoft Access を使用している場合、データベースファイル(.mdb)がロックされていることも考えられます。 異なる DSN 名からデータベースにアクセスすると、ロックされることがあります。 Windows エクスプローラーで、データベースファイル(.mdb)が保存されているフォルダー内にロックファイル(.ldb)がないか調べ、ある場合はその .ldb ファイルを削除してください。 他の DSN が同じデータベースファイルをポイントしている場合、今後エラーが発生しないようにするため、その DSN を削除します。 必要な変更を加えたら、コンピューターを再起動します。

[[参考]80004005—「(unknown)」を使用できませんでした;ファイルが既に使用されています]

このエラーは、Microsoft Access データベースを使用して web ブラウザーまたは Live ビューで動的ページを表示しようとしたときに発生します。このエラーメッセージの 別のバリエーションは「80004005—Microsoft Jet データベース エンジンがファイル(unknown)を開けません」です。

考えられる原因は 権限の問題です。いくつかの具体的な原因と解決策を以下に示します。

  • Internet Information Server で使用されているアカウント(通常は IUSR)が、ファイルベースの データベースまたはファイルが含まれているフォルダーに対する適切な Windows 権限を持っていない可能性があります。ユーザーマネージャーで IIS アカウント(IUSR)の権限を確認してください。

  • 一時ファイルを 作成または削除する権限がない可能性があります。ファイルおよびフォルダーに対する権限を確認してください。 一時ファイルを作成または削除する権限があることを確認してください。一時ファイルは通常データベースと同じフォルダーに作成されますが、/Winnt などの他のフォルダーにファイルが作成される場合もあります。

  • Windows 2000 では、Access データベース DSN の タイムアウト値を変更する必要がある場合があります。タイムアウト値を変更するには、 スタート > 設定 > コントロールパネル > 管理ツール > データソース(ODBC)を選択します。システムタブをクリックし、適切な DSN をハイライト表示して、設定ボタンを クリックします。「オプション」ボタンをクリックしてページのタイムアウト値を 5000 に変更します。

    問題が続く場合は、 次の Microsoft ナレッジベースアーティクルを参照してください:

  • PRB:80004005「'(unknown)' を使用できませんでした;ファイルが既に 使用されています」http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174943

  • PRB:http://support.microsoft.com/default.aspx?scid=kb;en-us;Q253604 でプライマリサーバーページにて Microsoft Access データベース接続が失敗します。

  • PRB: Access 使用時に「ファイル '(不明)' を開くことができませんでした」エラー(http://support.microsoft.com/default.aspx?scid=kb;ja-jp;Q166029

[[Reference]80004005—ログオンに失敗しました()]

このエラーは、Microsoft SQL Server を使用し、web ブラウザーまたは Live ビューで動的ページを表示しようとする時に発生します。

このエラーは、SQL Server が送信されたログオン アカウントまたはパスワードを受け入れないか認識しない場合(標準セキュリティを使用している場合)、または Windows アカウントが SQL アカウントにマッピングされていない場合(統合セキュリティを使用している場合)に、SQL Server によって生成されます。

原因と解決策を以下に示します。

  • 標準セキュリティを使用する場合、アカウント名とパスワードが正しくない可能性があります。システム管理者アカウントとパスワード(UID=「sa」でパスワードなし)を試してください。これは接続文字列行で定義する必要があります。(DSN はユーザー名とパスワードを保存しません。)

  • 統合セキュリティを使用する場合は、ページを呼び出す Windows アカウントを確認し、マッピングされた SQL アカウント(もしあれば)を見つけてください。

  • SQL Server では、SQL アカウント名にアンダースコアを使用できません。誰かが手動で Windows IUSR_machinename アカウントを同じ名前の SQL アカウントにマッピングした場合、失敗します。アンダースコアを使用するアカウントを、アンダースコアを使用しないSQL上のアカウント名にマッピングします。

[[Reference]80004005—操作では更新可能なクエリを使用する必要があります]

このエラーは、イベントがレコードセットを更新またはレコードセットにデータを挿入する時に発生します。

考えられる原因と解決策は次のとおりです:

  • データベースを含むフォルダーに設定された権限が制限的すぎます。IUSR 権限は読み取り/書き込みに設定する必要があります。

  • データベースファイル自体の権限に完全な読み取り/書き込み権限が設定されていません。

  • データベースが Inetpub/wwwroot ディレクトリの外側に配置されている可能性があります。データを表示および検索することはできますが、データベースが wwwroot ディレクトリに配置されていない限り、更新できない場合があります。

  • レコードセットが更新不可能なクエリーに基づいています。 結合は、データベース内の更新不可能なクエリの好例です。更新可能になるようにクエリを再構築してください。

    このエラーの詳細については、Microsoft ナレッジベースの http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174640 にある「PRB: ASP 'Error The Query Is Not Updateable' When You Update Table Record」を参照してください。

[[Reference]80040e07—条件式でデータタイプが一致しません]

このエラーは、サーバーが Insert Record または Update Record サーバービヘイビアを含むページを処理しようとし、サーバービヘイビアが Microsoft Access データベースの Date/Time 列の値を空文字列("")に設定しようとする時に発生します。

Microsoft Access は強力なデータタイピングを持っており、指定された列値に厳格な一連のルールを課します。SQLクエリの空の文字列値は、Accessの日付/時刻列に保存できません。現在、唯一の既知の回避策は、空の文字列("")やデータタイプに指定された値の範囲に対応しない他の値で Access の日付/時刻列を挿入または更新することを避けることです。

[[Reference]80040e10—Too few parameters]

このエラーは、SQL クエリで指定された列がデータベーステーブルに存在しない場合に発生します。SQL クエリに対してデータベーステーブルの列名を確認してください。このエラーの原因は、多くの場合、誤字です。

[[Reference]80040e10—COUNT フィールドが正しくありません]

このエラーは、Insert Record サーバービヘイビアーを含むページを web ブラウザーでプレビューし、それを使用して Microsoft Access データベースにレコードを挿入しようとする場合に発生します。

クエスチョンマーク(?)が含まれているデータベースフィールドにレコードを挿入しようとしている可能性があります。フィールド名に含まれています。クエスチョンマークは、Microsoft Access を含む一部のデータベースエンジンの特殊文字であり、データベーステーブル名やフィールド名には使用しないでください。

データベースシステムを開いて、クエスチョンマーク(?)を削除してください。フィールド名から削除し、このフィールドを参照するページ上のサーバー動作を更新してください。

[[Reference]80040e14—INSERT INTO文の構文エラー]

このエラーは、Insert Recordサーバー動作を含むページをサーバーが処理しようとしたときに発生します。

このエラーは通常、データベース内のフィールド、オブジェクト、または変数の名前に関する以下の1つ以上の問題が原因で発生します:

  • 予約語を名前として使用している。 大半のデータベースには予約語がいくつかあります。 例えば、「date」は予約語であり、データベース内の列名に使用することはできません。

  • 名前の中で特殊文字を使用している。 例えば、以下の特殊文字があります。

    . / * : ! # & - ?

  • 名前の中でスペースを使用している。

    このエラーは、データベース内のオブジェクトに対して定義した入力マスクに、挿入されたデータが適合しない場合にも発生します。

    この問題を解決するには、データベース内で列名を指定するときに、「date」、「name」、「select」、「where」、「level」などの予約語を使用しないようにします。 さらに、スペースと特殊文字は削除してください。

    一般的なデータベースシステムの予約語は、以下の Web ページを参照してください。

  • Microsoft Access(http://support.microsoft.com/default.aspx?scid=kb;ja-jp;Q209187

  • MySQL(http://dev.mysql.com/doc/mysql/en/reserved-words.html

[[Reference]80040e21—InsertまたはUpdateでのODBCエラー]

このエラーは、Update RecordまたはInsert Recordサーバー動作を含むページを処理しようとした際にサーバーで発生します。データベースがサーバー動作が実行しようとしている更新または挿入操作を処理できません。

考えられる原因と解決方法は以下の通りです:

  • サーバー動作がデータベーステーブルの自動番号フィールドを更新しようとしているか、自動番号フィールドにレコードを挿入しようとしています。自動番号フィールドはデータベースシステムによって自動的に設定されるため、外部から値を設定しようとする試みは失敗します。

  • サーバーの動作が更新または挿入しようとしているデータの型が、データベースフィールドに適していない場合です。例えば、ブーリアン(yes/no)フィールドに日付を挿入する、数値フィールドに文字列を挿入する、日付/時刻フィールドに不適切な形式の文字列を挿入するなどがあります。

[[Reference]800a0bcd—BOFまたはEOFがtrueです]

このエラーは、Web ブラウザーまたは Live ビューで動的ページを表示しようとした際に発生します。

問題は、ページが空のレコードセットからデータを表示しようとするときに発生します。問題を解決するには、ページに表示される動的コンテンツにShow Regionサーバービヘイビアーを適用します。手順は次のとおりです。

ページ上の動的コンテンツをハイライト表示します。

サーバービヘイビアーパネルでプラス(+)ボタンをクリックし、Show Region > Show Region If Recordset Is Not Emptyを選択します。

動的コンテンツを提供するレコードセットを選択し、OKをクリックします。

ページ上の動的コンテンツの各要素について、手順1から3を繰り返します。

MySQL エラーメッセージのトラブルシューティング

MySQL 4.1へのPHPデータベース接続をテストするときに遭遇する可能性のある一般的なエラーメッセージの1つは、「Client does not support authentication protocol requested」です。MySQLクライアントのアップグレードを検討してください。

MySQLの以前のバージョンに戻すか、PHP 5をインストールしていくつかの動的リンクライブラリ(DLL)をコピーする必要がある場合があります。詳細な手順については、PHP開発環境の設定を参照してください。