- ベストアンサー
TYPE=Inoodbが指定するとワーニングが出るメッセージの対処方法
- 質問者はMYSQLで問題に直面しており、テーブル作成時にTYPEでInnoDBを指定するとワーニングが出る問題に遭遇しています。質問者はどのようにワーニングを解消できるか知りたいと思っています。
- 質問者はMySQLのバージョン5.0.7-betaを使用しており、ソースからコンフィグをしてインストールしています。しかし、--with-innodbオプションを指定してもInnoDBを有効にすることができず、テーブル作成時にTYPEでInnoDBを指定するとワーニングが出てしまいます。
- 質問者は解決策を求めており、ワーニングを解消する方法を知りたいと考えています。質問者は要約文やタイトルにSEOを意識したものを作成する必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
失礼、Waningでしたね。 設定とSQLのどちらに問題があるかは メッセージの内容がわからないとどうしようもないので、 5.0なら SHOW WANINGS が使えると思いますので、試してみてください。 ちなみに、4.0ではWARNING自体が存在しないので、 私の環境では同じSQLでも正常終了しました。
その他の回答 (2)
- sakyo-t
- ベストアンサー率70% (19/27)
どんなWarningやErrorが出ましたか? エラーコードなどからも何が原因か見つかることが多いので、 設定と一緒に教えて下しさい。 innodb_data_home_dir = /usr/local/mysql/var/ innodb_log_group_home_dir = /usr/local/mysql/var/ innodb_log_arch_dir = /usr/local/mysql/var/ と設定されていますが /usr/local/mysql/var/ というディレクトリはありますか? あるならこのディレクトリにmysqld実行ユーザに (たぶんmysqlグループでmysqlっていうユーザ) 書き込み権限がありますか?
補足
/usr/local/mysql/varというディレクトリの存在を確認 したのですが存在していました。 mysqlユーザーでの書込み権限はありました。 パーミッションのオーナーがmysqlになっているのでその辺り は大丈夫だと思います。 Errorでなく出るのはWarningです。 ちなみにコードは上記に書いた通りですが、 クリエイトテーブルをした時に以下のようなメッセージが 出るという点です。 Query OK, 0 rows affected, 1 warning (0.02 sec) 一応クリエイトテーブル文は成功しているようで テーブルは作成されていました。 上記クリエイトテーブルでTYPE=InnoDBを外すとWarningが出ずに 以下のようなメッセージが出ます。 Query OK, 0 rows affected 確認でInnoDBが組み込まれているか以下の命令でSQLを飛ばして 確認してみたところどうやら組み込まれてはいるようですがなぜ Warningが出るのでしょうか? mysql> show variables like 'have%'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | have_archive | NO | | have_bdb | NO | | have_blackhole_engine | NO | | have_compress | YES | | have_crypt | YES | | have_csv | NO | | have_example_engine | NO | | have_federated_engine | NO | | have_geometry | YES | | have_innodb | YES | | have_isam | NO | | have_ndbcluster | NO | | have_openssl | NO | | have_query_cache | YES | | have_raid | NO | | have_rtree_keys | YES | | have_symlink | YES | +-----------------------+-------+ 17 rows in set (0.34 sec) と言った感じです。
- sakyo-t
- ベストアンサー率70% (19/27)
4.0~4.1くらいまでしか使ったことが無いので、ハズレ情報かもしれませんが。 my.cnfを設定しましたか? おそらくソースか、share(/usr/shareとか/usr/local/share)に 何パターンかサンプル設定ファイルが置いてあると思います。 my-innodb-heavy-4G.cnf my-large.cnf my-medium.cnf my-small.cnfとか このなかでinnodb設定をしないと使えないと思います。 詳しくは、my.cnfとかで検索かけたらでてくるんじゃないですかね? 参考URLはMySQL公式ドキュメントのinnodbの項目のリンクです。
補足
sakyo-tさんの指示にあったmy.cnfの設定を行っないようだった (InnoDBの部分がコメントアウトされてた)ので行ってみました。 /etcの下にあるmy.cnfの部分の設定のコメント部分を外して、 マシンをリブートし、同じようにテーブルを作成してみたのですが、 以前と同じようにワーニングが出てしまいました。 【設定した内容】 # Uncomment the following if you are using InnoDB tables innodb_data_home_dir = /usr/local/mysql/var/ innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /usr/local/mysql/var/ innodb_log_arch_dir = /usr/local/mysql/var/ # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 16M innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 5M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 設定が不味かったのでしょうか?
お礼
ありがとうございました。 sakyo-tさんの解答で問題の解決ができました。 sakyo-tさんの言うとおりにshow warningを使用してワーニングを検索した結果、 以下のメッセーじが出ました。 mysql> SHOW WARNINGS; +---------+------+--------------------------------------------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------------------------------------------+ | Warning | 1287 | 'TYPE=storage_engine' is deprecated; use 'ENGINE=storage_engine' instead | +---------+------+--------------------------------------------------------------------------+ どうやらcreate tableのTYPE指定が古い形式なので新しい形式ENGINEを推奨します。 という事らしいです。 という事でテストでTYPEの部分をENGINEに修正した所、以下の様に見事ワーニングが取れました。 mysql> create table or_test_mst ( -> test_id varchar(10) not null, -> test_name varchar(10), -> PRIMARY KEY (test_id)) -> ENGINE = InnoDB; Query OK, 0 rows affected (0.32 sec)