MySQLのコンパイルで問題が発生したときの対処法【CMakeの再構成手順】
MySQLのコンパイルで問題が発生する場合、その原因は設定(configure)が適切に行われていないことにあるケースが多くあります。その場合の解決策は、CMakeを使って再構成(リコンフィギュレーション)を行うことです。
CMakeCache.txtが引き起こす問題
CMakeを以前実行した直後に再度実行すると、前回の実行時に収集された情報がそのまま使われる可能性があります。この情報は「CMakeCache.txt」というファイルに保存されています。
CMakeは起動時にこのファイルを検索し、存在すればその内容を読み込んで「情報は正しいものだ」と想定して処理を進めます。しかし、構成を変更して再設定した場合には、この想定が誤りとなり、予期しないビルドエラーの原因になります。
また、CMakeを実行するたびには、再コンパイルのために「make」も再度実行する必要があります。以前のビルドで生成された古いオブジェクトファイルは、異なる構成オプションでコンパイルされたものである可能性があるため、事前に削除しておくのが安全です。
古いキャッシュとオブジェクトファイルの削除方法
古いオブジェクトファイルや構成情報が、現在使用しているインストールに混入しないようにするには、CMakeを再実行する前に、以下のコマンドを実行してください。
Unix系OSの場合
shell> make clean
shell> rm CMakeCache.txt
Windowsの場合
shell> devenv MySQL.sln /clean
shell> del CMakeCache.txt
なお、ソースツリーの外側でビルドしている場合は、CMakeを再実行する前にビルドディレクトリ自体を削除して作り直す必要があります。また、システムによっては、システムインクルードファイルの差異により警告が表示されることがありますが、多くの場合は問題ありません。
コンパイラとフラグの指定方法
使用するコンパイラを指定する
使用するCコンパイラおよびC++コンパイラを明示的に指定したい場合は、環境変数「CC」と「CXX」を定義します。設定例は以下の通りです。
shell> CC=gcc
shell> CXX=g++
shell> export CC CXX
独自のコンパイラフラグを指定する
ユーザー独自のC・C++コンパイラフラグを指定したい場合は、CMakeのオプションであるCMAKE_C_FLAGSおよびCMAKE_CXX_FLAGSを使用します。
どのようなフラグを指定すべきか分からない場合は、mysql_configコマンドに「--cflags」「--cxxflags」オプションを付けて実行すると、推奨されるフラグを確認できます。
コンパイルの詳細を確認する
コンパイル段階で実際にどのコマンドが実行されているかを確認したい場合は、CMakeでMySQLを構成した後、「make」の代わりに以下のように実行します。
shell> make VERBOSE=1
コンパイルが失敗する場合は、MYSQL_MAINTAINER_MODEオプションが有効になっていないかを確認してみてください。このモードが有効だと、コンパイラの警告がすべてエラーとして扱われるため、これを無効化することでコンパイルが正常に完了するケースがあります。
-
JavaのPreparedStatementを使ってMySQLテーブルを更新する方法
JavaからMySQLのテーブルを更新するには、PreparedStatementを使用するのが一般的で安全な方法です。PreparedStatementを使うことで、SQLインジェクションを防ぎつつ、パラメータを動的に設定できます。この記事では、実際にテーブルを作成し、Javaプログラムからレコードを更新するまでの一連の手順を解説します。1. テーブルの作成まず、MySQLで更新用のテーブルを作成しましょう。mysql> create table DemoTable( Id int, FirstName varchar(40) ); Query OK, 0 rows a
-
ApacheとMySQLを連携させる方法|ユーザー認証とログ管理の基本
ApacheとMySQLの連携とは本記事では、Webサーバー「Apache」とデータベース「MySQL」を組み合わせて活用する方法を解説します。Apacheは、Apache Software Foundationによって開発・保守されているWebサーバーソフトウェアです。ユーザーからWebページへのアクセス要求(リクエスト)を受け付け、いくつかのセキュリティチェックを実施したうえで、目的のページへとユーザーを誘導します。MySQLによるユーザー認証MySQLデータベースを使ってユーザー認証を行えるプログラムは数多く存在します。これらのプログラムを利用すれば、アクセスログをMySQLのテーブルに