- - PR -
MySQLについて教えてください。
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-08-26 17:13
スラッシュは3本にしましたか? characterEncodingは "SHIFT_JIS" にしましたか? | ||||||||
|
投稿日時: 2004-08-26 17:32
たーぞう様、返信ありがとうございます。
String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SHIFT_JIS"; テーブルhello_world_tableはC:\mysql\data\hellodbにあるのですが、そのため、スラッシュは2本だと思ったのですが・・・・。 characterEncoding=のあとをSHIFT_JISに書き換えて、試してみましたが、エラーのままでした。 | ||||||||
|
投稿日時: 2004-08-26 17:50
MySQLのデフォルト文字コードを明示的に指定するのでしたら
my.ini の[mysqld] 項に default-character-set=sjis の1行を追加しておけばよろしいかと思います。 とりあえず文字コードの問題で接続できないわけではないので、 ○CLASSPATH で指定された箇所にドライバーがあるかどうか?(ついでにドライバーの ファイルサイズが0バイトになっていないかどうか→この場合ファイルが破損している恐れあり。 ○CLASSPATH指定にスペルミスや余分なスペース等を入れていないか? あたりは大丈夫でしょうか? ※管理上の問題なので、直接エラーの原因になるわけではありませんが 自分で設定する場合、ドライバーは tomcat 内のcommon¥lib の下に入れています。 #追記 mysqld サービスは起動していますよね? [ メッセージ編集済み 編集者: Ken-Lab 編集日時 2004-08-26 18:14 ] | ||||||||
|
投稿日時: 2004-08-26 18:45
必要最低限のコードで試してみてください。
jdbc:mysql:/// ←ここのスラッシュは3つ必要です。 "jdbc:mysql://"でドライバーを判定して、その後ろの"host/db"で書式チェックを していると思います。今回の場合はhost名を省略しているので"///"になります。
ちなみに"jdbc:mysql://hellodb"だと"No suitable driver"が出ました。 上記の確認のみであればmysqlは必要ありません。 DBがなければ"Unable to connect to any hosts 〜(略)"になりますが、これは正常です。 DBがあってもパラメータがないのでエラーになるかもしれませんが、 とりあえず、"No suitable driver"が出なくなれば解決かと。 #URLの書式で接続に使うドライバを選択するJDBCの仕様に問題有りまくり | ||||||||
|
投稿日時: 2004-08-26 18:45
Ken-Lab様、返信ありがとうございます。
>#追記 >mysqld サービスは起動していますよね? 1つのコマンドプロンプトで、 C:\mysql\bin>mysql として、mysqldを起動して、 もう1つのコマンドプロンプトで、 C:\作業フォルダ\JavaHello>javac HelloWorldJDBCMySQL.java などをしているのですが・・・。これでは、起動されていないのでしょうか。 >○CLASSPATH で指定された箇所にドライバーがあるかどうか?(ついでにドライバーのファイルサイズが0バイトになっていないかどうか→この場合ファイルが破損している恐れあり。 ドライバーとは、mysql-connector-java-3.0.14-production-bin.jarですよね?? 間違っていますか・・・。 232KBとなっているのですが。 CLASSPATHは、 C:\mysql-connector-java-3.0.14-production\mysql-connector-java-3.0.14-production-bin.jar です。 スペルミスがないように、そのファイルの名前をそのままコピーしました。 余分なスペース等も確認しました。 「ClassNotFoundExceptionが発生するようなら、CLASSPATHの設定が間違っています。」 というのを、見つけて、ClassNotFoundExceptionがなかったので、CLASSPATHの設定はあっていると思っていたのですが・・・。 | ||||||||
|
投稿日時: 2004-08-26 18:57
tabby様、返信ありがとうございます。
>jdbc:mysql:/// ←ここのスラッシュは3つ必要です。 より、 String url = "jdbc:mysql:///hellodb?useUnicode=true&characterEncoding=SJIS"; としたところ、 C:\作業フォルダ\JavaHello>java HelloWorldJDBCMySQL java.sql.SQLException: General error, message from server: "Access denied for user: '@localhost' to database 'hellodb'" at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1977) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1900) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:950) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1771) at com.mysql.jdbc.Connection.<init>(Connection.java:440) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:400) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:16) というエラーになりました。 >#URLの書式で接続に使うドライバを選択するJDBCの仕様に問題有りまくり とは・・・・、詳しく教えていただけないでしょうか。 | ||||||||
|
投稿日時: 2004-08-26 19:06
とりあえず、パラメータでユーザーIDとパスワードを指定してみてください。
>#URLの書式で接続に使うドライバを選択するJDBCの仕様に問題有りまくり 接続文字列の書式でドライバー選択する仕様って何か変じゃないですか? JDBC自体そういうものと割り切って使うしかないんでしょうけど、 なんかこう、漠然と違和感有りまくりなんです(^^; | ||||||||
|
投稿日時: 2004-08-26 19:27
コマンドプロンプトからMySQLへ接続できて、SQLが発行できればOKでしょう。
うーん、恐らくこれが原因ではないでしょうか。 | ||||||||
