Bug #67125 MySQL Workbench Modeling tool drops all the previous database schema after selec
Submitted: 7 Oct 2012 18:12 Modified: 4 Nov 2012 0:22
Reporter: Alejandro Zaragoza Email Updates:
Status: Not a Bug Impact on me:
None 
Category:MySQL Workbench: Modeling Severity:S2 (Serious)
Version:5.2.44 OS:Microsoft Windows (Microsoft Windows 7 Home Basic Edition Service Pack 1 (build 7601), 64-bit)
Assigned to: CPU Architecture:Any
Tags: WBBugReporter
Triage: Needs Triage: D2 (Serious)

[7 Oct 2012 18:12] Alejandro Zaragoza
Description:
I tried to create some  tables and Database procesudre using Modeling from MySQL Workbench, when using CTRL+G and passing the connection screen in the Select objects to forward engineeri got a connection prompt, when cancillingi got this bug screen, if i enter the password for database conections it drops all tables and recreate all the database from zero as it is in the modeling set.

----- Developer Notes -----

MySQL Workbench CE for Windows version 5.2.44  revision 9933
Configuration Directory: C:\Users\Samuel Alejandro\AppData\Roaming\MySQL\Workbench
Data Directory: C:\Program Files (x86)\MySQL\MySQL Workbench 5.2 CE
Cairo Version: 1.8.8
OS: Microsoft Windows 7 Home Basic Edition Service Pack 1 (build 7601), 64-bit
CPU: 4x Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz, 3.8 GiB RAM
Active video adapter (0): Intel(R) HD Graphics 4000
Installed video RAM: 1839 MB
Current video mode: 1366 x 768 x 4294967296 colores
Used bit depth: 32
Driver version: 8.15.10.2761
Installed display drivers: igdumd64.dll,igd10umd64.dll,igd10umd64.dll,igdumd32,igd10umd32,igd10umd32
Current user language: Español (México)

Exception = System.Runtime.InteropServices.SEHException
Message = Un componente externo produjo una excepción.
FullText = System.Runtime.InteropServices.SEHException (0x80004005): Un componente externo produjo una excepción.
   en boost.function0<void>.()(function0<void>* )
   en boost.signals2.detail.slot_call_iterator_t<boost::signals2::detail::signal0_impl<void,boost::signals2::optional_last_value<void>,int,std::less<int>,boost::function<void __cdecl(void)>,boost::function<void __cdecl(boost::signals2::connection const &)>,boost::signals2::mutex>::slot_invoker,std::_List_iterator<std::_List_val<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group,boost::optional<int> >,boost::signals2::slot0<void,boost::function<void __cdecl(void)> >,boost::signals2::mutex> >,std::allocator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group,boost::optional<int> >,boost::signals2::slot0<void,boost::function<void __cdecl(void)> >,boost::signals2::mutex> > > > >,boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group,boost::optional<int> >,boost::signals2::slot0<void,boost::function<void __cdecl(void)> >,boost::signals2::mutex> 968d42b1(slot_call_iterator_t<boost::signals2::detail::signal0_impl<void\,boost::signals2::optional_last_value<void>\,int\,std::less<int>\,boost::function<void __cdecl(void)>\,boost::function<void __cdecl(boost::signals2::connection const \&)>\,boost::signals2::mutex>::slot_invoker\,std::_List_iterator<std::_List_val<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> >\,std::allocator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> > > > >\,boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> >* )
   en boost.signals2.optional_last_value<void>.operator()<class boost::signals2::detail::slot_call_iterator_t<class boost::signals2::detail::signal0_impl<void,class boost::signals2::optional_last_value<void>,int,struct std::less<int>,class boost::function<void __cdecl(void)>,class boost::function<void __cdecl(class boost::signals2::connection const &)>,class boost::signals2::mutex>::slot_invoker,class std::_List_iterator<class std::_List_val<class boost::shared_ptr<class boost::signals2::detail::connection_body<struct std::pair<enum boost::signals2::detail::slot_meta_group,class boost::optional<int> >,class boost::signals2::slot0<void,class boost::function<void __cdecl(void)> >,class boost::signals2::mutex> >,class std::allocator<class boost::shared_ptr<class boost::signals2::detail::connection_body<struct std::pair<enum boost::signals2::detail::slot_meta_group,class boost::optional<int> >,class boost::signals2::slot0<void,class boost::function<void __cdecl(void)> >,class boost::signals2::mutex> > > > >,clcc3763b0(optional_last_value<void>* , slot_call_iterator_t<boost::signals2::detail::signal0_impl<void\,boost::signals2::optional_last_value<void>\,int\,std::less<int>\,boost::function<void __cdecl(void)>\,boost::function<void __cdecl(boost::signals2::connection const \&)>\,boost::signals2::mutex>::slot_invoker\,std::_List_iterator<std::_List_val<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> >\,std::allocator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> > > > >\,boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> > first, slot_call_iterator_t<boost::signals2::detail::signal0_impl<void\,boost::signals2::optional_last_value<void>\,int\,std::less<int>\,boost::function<void __cdecl(void)>\,boost::function<void __cdecl(boost::signals2::connection const \&)>\,boost::signals2::mutex>::slot_invoker\,std::_List_iterator<std::_List_val<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> >\,std::allocator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> > > > >\,boost::signals2::detail::connection_body<std::pair<enum boost::signals2::detail::slot_meta_group\,boost::optional<int> >\,boost::signals2::slot0<void\,boost::function<void __cdecl(void)> >\,boost::signals2::mutex> > last)
   en boost.signals2.detail.signal0_impl<void,boost::signals2::optional_last_value<void>,int,std::less<int>,boost::function<void __cdecl(void)>,boost::function<void __cdecl(boost::signals2::connection const &)>,boost::signals2::mutex>.()(signal0_impl<void\,boost::signals2::optional_last_value<void>\,int\,std::less<int>\,boost::function<void __cdecl(void)>\,boost::function<void __cdecl(boost::signals2::connection const \&)>\,boost::signals2::mutex>* )
   en MySQL.Forms.WizardImpl.nextClick(Object sender, EventArgs arguments)
   en System.Windows.Forms.Control.OnClick(EventArgs e)
   en System.Windows.Forms.Button.OnClick(EventArgs e)
   en System.Windows.Forms.Button.WndProc(Message& m)
   en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

How to repeat:
CTRL+G
select your connection options
select any option from the next screen
In the Select objects to forward you will get a prompt asking for database password before selecting what objects to create in database.
If you set the password, the al previous database are deleted and it is replaced for the empty template created in the MySQL Workbench Modeling (The database design done in MySQL Workbench, tables procedures, index and it deletes all the record in the tables)
[7 Oct 2012 18:13] Alejandro Zaragoza
I got a crash bug if i don't enter database password when showing the "Select object to forward engineer" screen, but the deleting previous database issue seems more serious than this crash.
[7 Oct 2012 20:53] Miguel Solorzano
Thank you for the bug report. I can't repeat probably I missed an important step´to reproduce the behavior reported, I would appreciate if you attach a screenshot of each step. Thanks in advance.
[7 Oct 2012 21:33] Alejandro Zaragoza
Ok, i found the correct steps to recreate this bug, first you need to have a stored connection but without the password saved (You can save it and then press the clear button in the manage DB Connections), then open a MySQL Model and press CTRL+G (Forward Engineer to Database) then just press Next, in the next screen, Set Options for Database to be Created press next (Without checking any options, all remain unselected) in the next screen appers the Password connection prompt, if you enter the correct password then MySQL Workbench wipe out my database information and recreate the database with the template in my MySQL Model Design (It actually mades a drop to my actual database and create a new one, wothout changing of screen or ignoring what I selected in the Objects for the Forward engineer screen).

Here's some screenshots:

Prompting password befre clicking continue and selection database objects:

http://i118.photobucket.com/albums/o114/alexzm1/Screenshot.png

Bug noticing a bug o error:

http://i118.photobucket.com/albums/o114/alexzm1/Screenshot2.png

After closing the bug or error window, can't continue, go back or cancel, just close the window:

http://i118.photobucket.com/albums/o114/alexzm1/Screenshot3.png
[8 Oct 2012 0:16] Miguel Solorzano
Thank you for the feedback.
[4 Nov 2012 0:22] Alfredo Kojima
This is not a bug, Forward Engineer is meant to always create the database from scratch.
If you want only differences to be created, you must use Synchronize.