sql >> データベース >  >> RDS >> Mysql

dotNetChat_で始まるテーブルを作成すると、MySQLを再起動すると消えます

    何らかの理由で、MySQLはInnoDBファイルへのアクセスを拒否され、そのファイルをロードできず、ファイルなしで続行します。プロセスが2回実行されていないこと、およびMySQLユーザーがMySQLlibディレクトリにアクセスできるアカウントで実行されていることを確認できますか。

    私はこのエラーに基づいて調査結果を出しました:

    [ERROR] InnoDB: Failed to find tablespace for table "thepwf_prgminteractions"."dotnetchat_testtable" in the cache. Attempting to load the tablespace with space id 24.
    2014-03-05 18:05:33 0x1f30  InnoDB: Operating system error number 32 in a file operation.
    InnoDB: The error means that another program is using InnoDB's files.
    InnoDB: This might be a backup or antivirus software or another instance
    InnoDB: of MySQL. Please close it to get rid of this error.
    

    また、エラー32は、に基づいています。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx 意味:

    ERROR_SHARING_VIOLATION
    32 (0x20)
    The process cannot access the file because it is being used by another process.
    

    これは、私が言ったように、ファイルが別のプロセスによってロックされていることを意味します。また、MySQLを再起動すると、MySQLでそれらが開かれ、別のプロセスでロックできないため、これが発生します。 MySQLサービスが(再起動のために)停止されるとすぐに、別のプロセスがファイルをロックし、MySQLが再起動したときにファイルを開くことができなくなります。

    システム上のロックされたファイルと、それをロックしているプロセスを確認するには、 http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx

    管理者としてCMDプロンプトを実行し、次のように入力する必要があります。

    handle.exe thepwf_
    

    これにより、どのプロセスがファイルをロックしているのかがわかります。

    見つけたものを教えてください。




    1. ON CONFLICT句でplpgsql変数名を明確にする方法は?

    2. LIMIT句に大きなオフセットを使用してMySQLクエリを高速化するにはどうすればよいですか?

    3. ビューにnull以外の列を作成する方法

    4. SQL:基準を満たす関連付けのないレコードのみを返します