ラベル MySql の投稿を表示しています。 すべての投稿を表示
ラベル MySql の投稿を表示しています。 すべての投稿を表示

2008年10月14日火曜日

MySQLで接続中のスレッドや実行中のSQLを確認する

MySQLで、接続中のスレッドや実行中のSQLを確認するには以下のようにすれば良い。

mysql> show processlist;
+-----+------+-----------------+----------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------------+----------+---------+------+-------+------------------+
| 270 | user | localhost:19549 | dbname | Query | 0 | NULL | show processlist |
+-----+------+-----------------+----------+---------+------+-------+------------------+
1 row in set (0.00 sec)

2008年10月13日月曜日

MySQLのコメント

MySQLでコメント文を書く方法と注意点を述べる。

コメントスタイルは以下の3つ。


① #(行末まで)、
② --(行末まで)、
③ /*(行中または複数行)*/

をサポートしている。

ここで注意だが、

--(ダッシュ2つ)のコメントスタイルでは、2 つ目のダッシュの後にスペースを 1 つ以上挿入する必要がある。


これを知らずに苦労した経験があるので、注意すること。

MySQLでデータベース一覧と表一覧を確認する

MySQLでデータベース一覧、表一覧、表のフィールドを見る方法をメモしておく。

・データベース一覧はshow databasesを用いる。
・表一覧はshow tablesを用いる。

-- データベース一覧の表示
mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bookshop |
| foods |
| mysql |
| sqldrill |
+--------------------+
5 rows in set (0.00 sec)

-- テーブル一覧の表示
mysql>show tables from foods;
+-----------------+
| Tables_in_foods |
+-----------------+
| foodslist |
+-----------------+
1 row in set (0.06 sec)

-- フィールド一覧の表示
mysql>show fields from foods.foodslist;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| foodname | varchar(30) | YES | | NULL | |
| maker | varchar(30) | YES | | NULL | |
| category | varchar(20) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

2008年9月22日月曜日

コネクションプーリングを用いたDBアクセス

環境














言語java1.6
アプリケーションサーバTomcat5.5
DBmysql5.1.6
OSWindows XP


①JDBCドライバを
   Tomcatインストールディレクトリ\Tomcat 5.5\common\lib
に配置する。
今回は
  mysql-connector-java-5.1.6-bin.jar
を用いる。


***
当初、eclipseのWEB-INF/libに、このドライバをコピーするだけでドライバをロードできると思っていたが、それでは以下のような例外が発生して、ロードできない。

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'


②以下の3つのファイルに設定を加える。
(i)WEB-INF/web.xml
<resource-ref>
<res-ref-name>jdbc/projectDB<res-ref-name>
<res-type>javax.sql.DataSource<res-type>
<res-auth>Container<res-auth>
<res-sharing-scope>Shareable<res-sharing-scope>
</resource-ref>

(ii)META-INF/context.xml
<Context docBase="projectPass" path="/projectPass">
<ResourceLink global="jdbc/projectDB" name="jdbc/projectDB"
type="javax.sql.DataSource" />
<Context>


***ここで、nameの値はWEB-INF/web.xmlのres-ref-nameと一致させる。また、globalもjdbc/projectDBにする。もしも、globalをprojectDBだけにしたら、以下の例外が発生する。

javax.naming.NameNotFoundException: 名前 projectDB はこのコンテキストにバインドされていません


(iii)tomcatのconfig/server.xml
<Resource auth="Container"
driverClassName="com.mysql.jdbc.Driver" name="jdbc/projectDB"
password="DBパスワード" type="javax.sql.DataSource"
url="jdbc:mysql://localhost/projectPass" username="DBユーザー名" />


***今回の場合、urlにはポート番号を加えたりしない。つまり以下のようにしたりしない。
url="jdbc:mysql://localhost:3306/projectPass"



---------------------------------------------------------------------
最後に。何か間違っていることをしていたら、コンソールにエラーメッセージが出力されるから基本的にそれを見て対処すること。また、最終的に戻るべきところはmysqlやtomcat、java APIなどのドキュメント。

2008年9月13日土曜日

mysqlを使って、ユーザー作成からテーブル作成までを行う

①インストールが完了したら、以下のコマンドを入力してrootでログインする。

C:\> mysql -u root -p

②ユーザーを登録する。
 ユーザーIDがuser、パスワードがpasswordというユーザーに全てのテーブルに対して、全ての権限を与えて登録する場合は以下のようにする。

mysql> GRANT ALL ON *.* TO user@localhost IDENTIFIED BY 'password';

③次にデータベースを作成する。
user_dbという名前のデータベースを作成する場合は以下のようにする。

mysql> CREATE DATABASE user_db;

データベースが作成されたかどうかは、

mysql> SHOW DATABASES;

として確認できる。

**
因みに、データベースの削除は
mysql> DROP DATABASE user_db;

とすればよい。

④テーブルの作成
データベースの中にテーブルを作成するには以下のようにする。

まず、テーブルを作成したいデータベース(ここではuser_dbとする)に接続する。

mysql> USE user_db;

続いて、データベースを作成するためにCREATE TABLEを実行する。

mysql> CREATE TABLE user_table(id INTEGER NOT NULL, password VARCHAR(30), PRIMARY KEY(id));

のようにすればよい。

⑤テーブルが正しく作成されたかどうかの確認

mysql > show fields from user_db;