Bug #66863 mysqldiff and mysqldbcompare Fail
Submitted: 18 Sep 2012 22:34 Modified: 24 May 2013 19:49
Reporter: Muiz Motani Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Utilities Severity:S2 (Serious)
Version:5.2.43 OS:MacOS (10.6.8)
Assigned to: CPU Architecture:Any
Tags: mysqldbcompare, mysqldiff

[18 Sep 2012 22:34] Muiz Motani
Description:
The mysqldiff and mysqldbcompare utilities both fail with "AttributeError: 'Server' object has no attribute 'name'". The complete traceback is:

# server1 on 192.168.0.117: ... connected.
Traceback (most recent call last):
  File "/Applications/MySQLWorkbench.app/Contents/Resources/scripts/mysqldbcompare", line 160, in <module>
    parts[0], parts[1], options)
  File "/Applications/MySQLWorkbench.app/Contents/Resources/libraries/mysql_libs.zip/mysql/utilities/command/dbcompare.py", line 414, in database_compare
  File "/Applications/MySQLWorkbench.app/Contents/Resources/libraries/mysql_libs.zip/mysql/utilities/common/dbcompare.py", line 186, in server_connect
  File "/Applications/MySQLWorkbench.app/Contents/Resources/libraries/mysql_libs.zip/mysql/utilities/common/server.py", line 333, in connect_servers
AttributeError: 'Server' object has no attribute 'name'

How to repeat:
execute a mysqldiff or mysqldbcompare on two databases on the same server
[21 Sep 2012 13:54] Chuck Bell
Please include the command you used to launch the utilities so that we can successfully repeat this error.
[4 Oct 2012 22:30] Elan Ruusamäe
the problem is that the code refers to .name which does not exist

error is triggered if client connects to server which version is older than client:

./mysql/utilities/common/server.py :
 330     if not _require_version(source, version):
 331         raise UtilError("The %s version is incompatible. Utility "
 332                         "requires version %s or higher." %
 333                         (source.name, version))

the source.name is what gives the AttributeError

it happpens with mysql-utilities 1.1.0 as well (mysql workench 5.2.44)
[4 Oct 2012 22:49] Elan Ruusamäe
not sure what was intended there in the code, but so far i made it print server.host:

http://git.pld-linux.org/?p=packages/mysql-utilities.git;a=blob;f=bug-66863.patch;h=21ba25...
[4 Oct 2012 22:51] Elan Ruusamäe
now prints instead of python exception:

$ mysqldiskusage --server=mysql@elfride:3306  -vvv
# Source on elfride: ... connected.
Usage: mysqldiskusage --server=user:pass@host:port:socket db1 --all

mysqldiskusage: error: The elfride version is incompatible. Utility requires version 5.1.30 or higher.
[24 May 2013 19:49] Chuck Bell
Fixed in release-1.1.1