質問: mySQLにて下記SQL文を実行しました。 select * from テーブル名; すると ERROR 1932 (42S02): Table 'db名.テーブル名' doesn't exist in engine という結果が帰ってきました。 xamppにてSQL用のポートは通しており、SQL接続、DB接続まではできるのですが、DB内のテーブルを参照しようとすると上記のようなエラーが起こってしまいます。 テーブル名ももちろん存在しており、正しい名前で入力しているので、文自体の間違いもないと思います。 「doesn't exist in engine」でググっても参考になるようなデータもなく、何がどう間違っているのかが分かりません。 分かる方いらっしゃいましたらどうかお教え願います。
回答: コマンドラインでMySQLにアクセスして、 下記のように「データーベース名一覧」を実際に表示してから「データーベース名」をバッククォート(`)で囲んでエスケープします。 ``` mysql> show databases; mysql> use `データーベース名`; ``` そして、下記のように「テーブル名一覧」を実際に表示してから「データーベース名、テーブル名」をそれぞれバッククォート(`)で囲んでエスケープします。 ``` mysql> show tables from `データーベース名`; mysql> select * from `テーブル名`; ``` あとは、MyISAMとInnoDBの設定を変更してしまったなどの理由かと思います。使用エンジンは下記のように確認できます。 ``` mysql> show engines; ``` テーブル作成時のエンジンが不明な場合は下記のようにします。 ``` mysql> show create table `データーベース名`.`テーブル名`\G ``` また、MySQLのInnoDB使用時で古いバイナリログファイルが悪さをしていることあります。下記のSQL文でエラーが表示される場合は、`/var/lib/mysql/ib_logfile0`、`/var/lib/mysql/ib_logfile1`の2ファイルを`/tmp`などに移動てからMySQLを再起動してみます。 ``` mysql> check table `データーベース名`.`テーブル名`; mysql> repair table `データーベース名`.`テーブル名`; ```