Bug #23657 Malformed ColumnName with special charactars
Submitted: 26 Oct 2006 5:57 Modified: 6 Nov 2006 14:13
Reporter: Martin Karch Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / NET Severity:S2 (Serious)
Version:1.0.8 OS:Any
Assigned to: CPU Architecture:Any
Tags: character, columnname, corrupt, malformed, special, umlaut

[26 Oct 2006 5:57] Martin Karch
Description:
ColumnNames with special characters, e.g. the German Umlauts get malformed when filling a DataTable or DataSet.

I know that special characters should be avoided in column names, but in my case I 'm dynamically creating columns by a crosstab procedure.

How to repeat:
conn = New MySqlConnection("server=mysql;database=test;user id=root;password=secret")
conn.Open()

Dim da As New MySqlDataAdapter("SELECT ""a"" As 'auo', ""b"" As 'äöü'", conn)
Dim dt As New DataTable

da.Fill(dt)
        
DataGridView1.DataSource = dt

Suggested fix:
Don't know. Perhaps an encoding problem?
[27 Oct 2006 10:53] Tonci Grgin
Hi Martin and thanks for your problem report. You are missing some of important info like MySQL server version, NET fw version and so on. I also noticed that you don't use "character set" or "charset" connection string keyword. Can you please test with it and, if it doesn't help, provide info that's missing.
[30 Oct 2006 10:41] Martin Karch
The .NET fw is 2.0, the server is 5.0.27.

If I add "charset=latin1" to the connection string, the same error occurs. If I add "charset=utf8", the lower case umlauts are retrieved correctly, but the upper case ColumnNames get the correct umlaut with an additional "1".
[30 Oct 2006 11:10] Tonci Grgin
Martin, thanks. Can you please attach my.ini (or my.cnf) from the server. Also, can you please paste output of SHOW VARIABLES LIKE "%char%" and DESCRIBE "yourtablename"\G from mysql command line client.
[31 Oct 2006 7:05] Martin Karch
SHOW VARIABLES LIKE "%char%"

output when called by .net connector (without charset in conn string):
  character_set_client       latin1
  character_set_connection   latin1
  character_set_database     latin1
  character_set_filesystem   binary
  character_set_results      
  character_set_server       latin1
  character_set_system       utf8
  character_sets_dir         E:\MySQL\share\charsets\

output by frontend software:
character_set_client         latin1
character_set_connection     latin1
character_set_database       latin1
character_set_filesystem     binary
character_set_results        latin1
character_set_server         latin1
character_set_system         utf8
character_sets_dir           E:\MySQL\share\charsets\

output by mysql console client:
character_set_client         latin1
character_set_connection     latin1
character_set_database       latin1
character_set_filesystem     binary
character_set_results        latin1
character_set_server         latin1
character_set_system         utf8
character_sets_dir           E:\MySQL\share\charsets\

DESCRIBE "yourtablename"\G
As I wrote in prevouisly I don't have a table with special character ColumnNames. I have a stored procedure that dynamically generates resultsets from my data ("crosstab call").
[31 Oct 2006 7:05] Martin Karch
my.ini

Attachment: my.ini (application/octet-stream, text), 9.81 KiB.

[31 Oct 2006 16:21] Reggie Burnett
Fixed in 5.0.2
[6 Nov 2006 14:14] MC Brown
A note has been added to the 5.0.2 changelog
[15 Jan 2007 10:27] Tonci Grgin
Seems not fixed. See Bug#25385.
[11 Jun 2007 9:00] Tonci Grgin
My mistake, seems Bug#25385 is !Bg after all. Waiting on Reggie's ruling.