Description:
PRIMARY KEYs are forgotten when using MySQL Workbench Migrate from Sybase to MySQL.
How to repeat:
Create a sybase table like this:
1> sp_help emp_mag
2> go
Name Owner Object_type
------------------------------ ------------------------------ --------------------------------
emp_mag dbo user table
(1 row affected)
Data_located_on_segment When_created
------------------------------ --------------------------
default Nov 5 2013 9:46AM
Column_name Type Length Prec Scale Nulls Default_name Rule_name Access_Rule_name Identity
------------------------------ ------------------------------ ----------- ---- ----- ----- ------------------------------ ------------------------------ ------------------------------ --------
id_emp_mag smallint 2 NULL NULL 0 NULL NULL NULL 1
id_magasin char 3 NULL NULL 0 NULL NULL NULL 0
login_emp varchar 50 NULL NULL 0 NULL NULL NULL 0
mdp_emp varchar 40 NULL NULL 0 NULL NULL NULL 0
nom_emp varchar 50 NULL NULL 0 NULL NULL NULL 0
prenom_emp varchar 50 NULL NULL 0 NULL NULL NULL 0
is_admin bit 1 NULL NULL 0 NULL NULL NULL 0
is_actif bit 1 NULL NULL 0 NULL NULL NULL 0
email_emp varchar 250 NULL NULL 1 NULL NULL NULL 0
lock_emp bit 1 NULL NULL 0 emp_mag_lock_e_1337768792 NULL NULL 0
nb_connect_emp int 4 NULL NULL 0 emp_mag_nb_con_1353768849 NULL NULL 0
index_name index_description index_keys index_max_rows_per_page index_fillfactor index_reservepagegap index_created
-------------------- -------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------- ---------------- -------------------- -------------------
pk_emp_mag clustered, unique located on default id_emp_mag 0 0 0 Dec 17 2014 4:03PM
(1 row affected)
No defined keys for this object.
Object is not partitioned.
Lock scheme Datarows
exp_row_size reservepagegap fillfactor max_rows_per_page identity_gap
------------ -------------- ---------- ----------------- ------------
0 NULL NULL 0 0
(1 row affected)
concurrency_opt_threshold optimistic_index_lock dealloc_first_txtpg
------------------------- --------------------- -------------------
15 0 0
(return status = 0)
You can see that there is a clustered unique key named pk_emp_mag on id_emp_mag.
However, the MySQL Workbench conversion did not make a primary key at all:
*************************** 1. row ***************************
Table: emp_mag
Create Table: CREATE TABLE `emp_mag` (
`id_emp_mag` smallint(6) NOT NULL,
`id_magasin` char(3) NOT NULL,
`login_emp` varchar(50) NOT NULL,
`mdp_emp` varchar(40) NOT NULL,
`nom_emp` varchar(50) NOT NULL,
`prenom_emp` varchar(50) NOT NULL,
`is_admin` tinyint(4) NOT NULL,
`is_actif` tinyint(4) NOT NULL,
`email_emp` varchar(250) DEFAULT NULL,
`lock_emp` tinyint(4) NOT NULL DEFAULT '0',
`nb_connect_emp` int(11) NOT NULL DEFAULT '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Suggested fix:
Create the proper primary keys
Description: PRIMARY KEYs are forgotten when using MySQL Workbench Migrate from Sybase to MySQL. How to repeat: Create a sybase table like this: 1> sp_help emp_mag 2> go Name Owner Object_type ------------------------------ ------------------------------ -------------------------------- emp_mag dbo user table (1 row affected) Data_located_on_segment When_created ------------------------------ -------------------------- default Nov 5 2013 9:46AM Column_name Type Length Prec Scale Nulls Default_name Rule_name Access_Rule_name Identity ------------------------------ ------------------------------ ----------- ---- ----- ----- ------------------------------ ------------------------------ ------------------------------ -------- id_emp_mag smallint 2 NULL NULL 0 NULL NULL NULL 1 id_magasin char 3 NULL NULL 0 NULL NULL NULL 0 login_emp varchar 50 NULL NULL 0 NULL NULL NULL 0 mdp_emp varchar 40 NULL NULL 0 NULL NULL NULL 0 nom_emp varchar 50 NULL NULL 0 NULL NULL NULL 0 prenom_emp varchar 50 NULL NULL 0 NULL NULL NULL 0 is_admin bit 1 NULL NULL 0 NULL NULL NULL 0 is_actif bit 1 NULL NULL 0 NULL NULL NULL 0 email_emp varchar 250 NULL NULL 1 NULL NULL NULL 0 lock_emp bit 1 NULL NULL 0 emp_mag_lock_e_1337768792 NULL NULL 0 nb_connect_emp int 4 NULL NULL 0 emp_mag_nb_con_1353768849 NULL NULL 0 index_name index_description index_keys index_max_rows_per_page index_fillfactor index_reservepagegap index_created -------------------- -------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------- ---------------- -------------------- ------------------- pk_emp_mag clustered, unique located on default id_emp_mag 0 0 0 Dec 17 2014 4:03PM (1 row affected) No defined keys for this object. Object is not partitioned. Lock scheme Datarows exp_row_size reservepagegap fillfactor max_rows_per_page identity_gap ------------ -------------- ---------- ----------------- ------------ 0 NULL NULL 0 0 (1 row affected) concurrency_opt_threshold optimistic_index_lock dealloc_first_txtpg ------------------------- --------------------- ------------------- 15 0 0 (return status = 0) You can see that there is a clustered unique key named pk_emp_mag on id_emp_mag. However, the MySQL Workbench conversion did not make a primary key at all: *************************** 1. row *************************** Table: emp_mag Create Table: CREATE TABLE `emp_mag` ( `id_emp_mag` smallint(6) NOT NULL, `id_magasin` char(3) NOT NULL, `login_emp` varchar(50) NOT NULL, `mdp_emp` varchar(40) NOT NULL, `nom_emp` varchar(50) NOT NULL, `prenom_emp` varchar(50) NOT NULL, `is_admin` tinyint(4) NOT NULL, `is_actif` tinyint(4) NOT NULL, `email_emp` varchar(250) DEFAULT NULL, `lock_emp` tinyint(4) NOT NULL DEFAULT '0', `nb_connect_emp` int(11) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=latin1 Suggested fix: Create the proper primary keys