1

Navicat For MySQL Bugs Filed


Posted by Artem Russakovskii on March 25th, 2008 in Databases
Share

Updated: April 22nd, 2008

Update: Looks like both of these have been fixed in 8.0.26.

Navicat For MySQL is a GUI for MySQL developers. I've tried a few tools before but somehow got attached to Navicat due to a few nice features that I'm not going to go into right now. Navicat suffers from a couple of annoying bugs and random crashes. I don't know if I can help fix the random ones but if I can at least file the ones I can reproduce, everyone wins. I have the latest as of today version 8.0.23.

Bug [NAL-15328]: Structure Sync Fails to notice encoding differences

Last Update: 13 Mar 2008 12:38 PM
Last Replier: Mayho Ho
Status: Open
Department: Navicat Support Center
Created On: 13 Mar 2008 09:52 AM

Structure sync doesn't see the difference between my columns that are utf8 and that are latin1. This is a severe bug. I relied on it to compare some production tables and wasn't aware some fields weren't utf8 in one of the tables until I dumped the DDL.

In 2 different databases:

1
2
3
4
5
6
7
8
9
-- Table "test" DDL
CREATE TABLE `test` (
`a` varchar(255) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
-- Table "test" DDL
CREATE TABLE `test` (
`a` varchar(255) character set utf8 default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Now run Structure Sync. It will not report any differences and won't even show utf8ness in the 2nd table.

Bug [VXL-67626]: Navicat crash

Last Update: 25 Mar 2008 10:37 AM
Last Replier: Mayho Ho
Status: Open
Department: Navicat Support Center
Created On: 07 Mar 2008 04:50 AM

If I open the Server Monitor and there's a really long query running (I don't have the exact length), for example a really long SELECT with A OR B OR C, etc, it just crashes. I think there's a buffer overrun somewhere in Navicat's code, so when it does SHOW FULL PROCESSLIST internally, it overruns that buffer.
I would appreciate a fix for this as I lose all my open queries and tables when this happens. I'd be glad to answer any additional questions, but I hope the gist of it is clear.
A fix would involve at least letting a user select between SHOW PROCESSLIST and SHOW FULL PROCESSLIST as well as fixing the crash.

I was able to come up with a test case. I did warn you the query had to be really large :-].

1
2
3
4
5
CREATE TABLE `media` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`index_status` enum('none') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Take an instance of navicat and start a transaction:
> begin;
> select * from media for update;

Now open another Navicat session and issue the attached quite long sql vxl-67626.txt. Because I locked up the table in the previous step, you'll have plenty of time to open up the Server Monitor. The query should remain in the
process list until the first transaction is canceled or completed. Now launch Server Monitor and observe it crash.

● ● ●

Artem Russakovskii is a San Francisco programmer, blogger, and future millionaire (that last part is in the works). Follow Artem on Twitter (@ArtemR) or subscribe to the RSS feed.

In the meantime, if you found this article useful, feel free to buy me a cup of coffee below.



Share
  • Scott

    Try Sqlyog. It is not as buggy as Navicat and the structure sync tool rocks.