Bug #23645 Connection error while connecting to MySQL.
Submitted: 25 Oct 2006 20:10 Modified: 22 Feb 2007 14:00
Reporter: Parham Khataei Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / J Severity:S3 (Non-critical)
Version:5.0.4 OS:Microsoft Windows (Windows XP Home Edition SP2)
Assigned to: Mark Matthews CPU Architecture:Any

[25 Oct 2006 20:10] Parham Khataei
Description:
java.sql.SQLException: Unknown initial character set index '48' received from server. Initial client character set can be forced via the 'characterEncoding' property.

Using 'characterEncoding' has no effect and you get the same error message.
Interesting point is that, if you leave everything untouched and use the 5.0.3 version, then everything works ok. But as soon as you use 5.0.4, you get the same error message.

How to repeat:
cn = DriverManager.getConnection("jdbc:mysql://localhost/text_scanner?user=xxx&password=yyy");

try to connect to a local MySQL server (XAMPP server)

Suggested fix:
Use 5.0.3 instead of 5.0.4.
[25 Oct 2006 20:22] Mark Matthews
Looking at the code, I don't see where '48' is unknown to the driver (but it is latin1-cias). What does your my.cnf look like? Do you (or does XAMPP) specify a non-standard character set for the server?

What version(s) of XAMPP and MySQL are being used?

  -Mark
[25 Oct 2006 20:28] Parham Khataei
Thanks for your quick answer, I really appreciate that.
The XAMPP Version: Lite version 1.5.4
MySQL Version    : MySQL 5.0.24a

Here is 'my.cnf'

# Example MySQL config file for small systems.
#
# This is for a system with little memory (<= 64M) where MySQL is only used
# from time to time and it's important that the mysqld daemon
# doesn't use much resources.
#
# You can copy this file to
# /xampplite/mysql/bin/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is /xampplite/mysql/data) or
# ~/.my.cnf to set user-specific options.
#
# In this file, you can use all long options that a program supports.
# If you want to know which options a program supports, run the program
# with the "--help" option.

# The following options will be passed to all MySQL clients
[client] 
# password       = your_password 
port            = 3306 
socket          = mysql 

# Here follows entries for some specific programs 

# The MySQL server 
[mysqld] 
basedir="/xampplite/mysql" 
tmpdir="/xampplite/tmp" 
datadir="/xampplite/mysql/data" 

port            = 3306 
socket          = mysql 

old-passwords 
character-set-server = latin1
collation-server = latin1_general_ci

skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K

# Don't listen on a TCP/IP port at all. This can be a security enhancement,
# if all processes that need to connect to mysqld run on the same host.
# All interaction with mysqld must be made via Unix sockets or named pipes.
# Note that using this option without enabling named pipes on Windows
# (using the "enable-named-pipe" option) will render mysqld useless!
# 
#skip-networking
server-id	= 1

# Uncomment the following if you want to log updates
#log-bin=/xampplite/mysql/data/mysql-bin

# Uncomment the following if you are NOT using BDB tables
skip-bdb

skip-innodb 
# Uncomment the following if you are using InnoDB tables 
#innodb_data_home_dir = /xampplite/mysql/data/
#innodb_data_file_path = ibdata1:10M:autoextend 
#innodb_log_group_home_dir = /xampplite/mysql/data/
#innodb_log_arch_dir = /xampplite/mysql/data/
# You can set .._buffer_pool_size up to 50 - 80 % 
# of RAM but beware of setting memory usage too high 
#set-variable = innodb_buffer_pool_size=16M 
#set-variable = innodb_additional_mem_pool_size=2M 
# Set .._log_file_size to 25 % of buffer pool size 
#set-variable = innodb_log_file_size=5M 
#set-variable = innodb_log_buffer_size=8M 
#innodb_flush_log_at_trx_commit=1 
#set-variable = innodb_lock_wait_timeout=50 

[mysqldump] 
quick 
max_allowed_packet=16M 

[mysql] 
no-auto-rehash 
# Remove the next comment character if you are not familiar with SQL 
#safe-updates 

[isamchk] 
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk] 
key_buffer = 8M
sort_buffer_size = 8M

[mysqlhotcopy] 
interactive-timeout 

[WinMySQLadmin] 
Server="/xampplite/mysql/bin/mysqld.exe"
#user=root
#password=
[25 Oct 2006 20:39] Mark Matthews
I was able to reproduce this, looking into what's going on.
[27 Oct 2006 21:13] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/14506
[17 Dec 2006 16:21] Wing Lap Leung
I found that it also worked if the collation-server = latin1_general_ci is commented out, without redefined another one like collation-server = latin1_swedish_ci in my.cnf.

Although, I don't know how it will affect the mysql...

BTW, in my my.cnf, this line DID NOT commented out, whilst in some place on the web said that this should be changed to something other than latin1, like utf8:

character-set-server = latin1

Hope it helps.
[17 Jan 2007 16:08] Jeff H
If you comment out referring to character sets in my.cnf, it works:

;character-set-server = latin1
;collation-server = latin1_general_ci
[22 Feb 2007 14:00] MC Brown
A note has been added to the 5.0.5 changelog.