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

エラー:表xxxの表スペースが存在します。インポートする前にテーブルスペースを破棄してください

    ここでは少し遅れていますが、一般的に、「innodb_file_per_table」モードで実行しているときに「tablespacefull」エラーが発生したときにこの問題が発生するのを見てきました。詳細に立ち入ることなく(こちら )、データベースサーバーのテーブルスペースはinnodb_data_file_path設定で定義され、デフォルトではかなり小さいです。大きくしても、「テーブルスペースがいっぱい」は、クエリなどが大きくなると発生する可能性があります(テーブル以外の「もの」がたくさん格納され、ログやキャッシュなどを元に戻します)。

    とにかく、files-per-tableが保存されているOSディレクトリを見ると、OSXではデフォルトで/ var / lib / mysql、homebrewiircでは/usr / local / var/mysqlが見つかります。通常のコンパニオンtablename.frmファイルのない孤立したtablename.ibdファイル。その.ibdファイルを(安全のために)安全な一時的な場所に移動すると、問題が解決するはずです。

    $ ls /var/lib/mysql
    
    table1.frm
    table1.idb
    table2.frm
    table2.idb
    table3.idb <- problem table, no table3.frm
    table4.frm
    table4.idb
    
    $ mkdir /tmp/mysql_orphans
    $ mv /var/lib/mysql/table3.ibd /tmp/mysql_orphans/
    

    ただし、注意点が1つあります。たとえば、元々問題の原因となっているものを確認してください。長時間実行されているクエリ、ロックされたテーブルなどがクリアされました。そうしないと、2回目の試行時に、別の孤立した.ibdファイルが作成されてしまいます。



    1. xml文字列パラメータをSQLServerストアドプロシージャに渡す

    2. 行を列に動的に変換するMysqlクエリ

    3. T-SQLで結果を制限する方法

    4. PDOを使用するPHPで、最終的なSQLパラメーター化クエリを確認するにはどうすればよいですか?