Bug #36042 | MySQL Connector/Net 5.2.1 Not Updating auto_increment Primary Key Column | ||
---|---|---|---|
Submitted: | 13 Apr 2008 20:37 | Modified: | 16 Apr 2008 7:56 |
Reporter: | Mikhail Slivchenko | Email Updates: | |
Status: | Can't repeat | Impact on me: | |
Category: | Connector / NET | Severity: | S2 (Serious) |
Version: | 5.2.1 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | auto_increment, MySqlDataAdapter, UPDATE |
[13 Apr 2008 20:37]
Mikhail Slivchenko
[14 Apr 2008 13:41]
Tonci Grgin
Hi Mikhail and thanks for your report. I am unable to verify it on latest 5.2.1 sources. Explanation: Taken in consideration that cmdBuilder.ReturnGeneratedIdentifiers = true; is now default, following test case works as expected: namespace MySQLBug29877 { class Program { static private MySql.Data.MySqlClient.MySqlConnection conn = null; static private MySql.Data.MySqlClient.MySqlCommand cmd = null; static private MySql.Data.MySqlClient.MySqlDataAdapter da = null; static private MySql.Data.MySqlClient.MySqlCommandBuilder cmdBuilder = null; static private System.Data.DataSet SystemDataDataSet = null; static private System.Data.DataView SystemDataDataView = null; static private System.Data.DataRow SystemDataDataRow = null; static private System.Byte[] SystemBytes = new System.Byte[] { (byte)'a',(byte)'b', (byte)'c'}; static void Main(string[] args) { try { conn = new MySql.Data.MySqlClient.MySqlConnection(); cmd = new MySql.Data.MySqlClient.MySqlCommand(); da = new MySql.Data.MySqlClient.MySqlDataAdapter(); cmdBuilder = new MySql.Data.MySqlClient.MySqlCommandBuilder(); SystemDataDataSet = new System.Data.DataSet(); SystemDataDataView = new System.Data.DataView(); conn.ConnectionString = "Data Source=localhost;Port=3306;Database=test;User Id=root;Password=*****"; conn.Open(); MySqlCommand cmdCreateTable = new MySqlCommand("DROP TABLE IF EXISTS bug29877", conn); cmdCreateTable.CommandTimeout = 0; cmdCreateTable.ExecuteNonQuery(); cmdCreateTable.CommandText = "CREATE TABLE bug29877 (" + "id INTEGER UNSIGNED NOT NULL auto_increment," + "tinyint_value TINYINT UNSIGNED," + "PRIMARY KEY (id)" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8"; cmdCreateTable.ExecuteNonQuery(); cmd.CommandType=System.Data.CommandType.Text; cmd.Connection= conn; cmd.CommandText = "SELECT * FROM bug29877"; da.SelectCommand =cmd; da.Fill(SystemDataDataSet, "bug29877"); cmdBuilder.DataAdapter = da; cmdBuilder.DataAdapter.SelectCommand.CommandText = "SELECT * FROM bug29877"; cmdBuilder.RefreshSchema(); SystemDataDataView = SystemDataDataSet.Tables["bug29877"].DefaultView; SystemDataDataRow = SystemDataDataView.Table.NewRow(); SystemDataDataRow["tinyint_value"] = 1; SystemDataDataView.Table.Rows.Add(SystemDataDataRow); System.Console.WriteLine("ID before update: " + SystemDataDataRow["id"]); da.Update(SystemDataDataSet, "bug29877"); System.Console.WriteLine("ID after update: " + SystemDataDataRow["id"]); System.Console.ReadKey(); } catch (System.Exception SystemException) { System.Console.WriteLine(SystemException.Message); } } } } I'm using MySQL server 5.0.58PB & c/NET 5.2.1 from trunk.
[16 Apr 2008 7:50]
Mikhail Slivchenko
source and binaries from connector 5.2.1 (Table Editor)
Attachment: Table Editor.zip (application/zip, text), 164.22 KiB.
[16 Apr 2008 7:56]
Mikhail Slivchenko
from command line: mysql -u root -h host -p password create database bug; use bug; create table bug(id int(8) primary key unique auto_increment, name text) ENGINE=InnoDB DEFAULT CHARSET=cp1250 COLLATE=cp1250_croatian_ci; exit; then: - unzip archive Table Editor.zip - go "table editor\cs\bin\debug" - run tableeditor.exe - enter server, user, password than press "Connect" - select database "bug" - select table "bag" - add new value at text column - press "Update" - id column IS NULL!!!!!!! I think this a bug!
[22 Apr 2008 8:16]
Tonci Grgin
Mikhail, as I read it, you are actually arguing that TableEditor demo is not functioning, right? For as I see c/NET and code I attached is working well.