| Bug #88376 | ImportError: No module named utilities.common.tools ; Unable to use mysqlfrm | ||
|---|---|---|---|
| Submitted: | 6 Nov 2017 20:19 | Modified: | 8 Nov 2017 10:20 |
| Reporter: | Shahriyar Rzayev | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Utilities | Severity: | S2 (Serious) |
| Version: | 1.6.5-1 | OS: | CentOS (7) |
| Assigned to: | CPU Architecture: | Any | |
[6 Nov 2017 20:19]
Shahriyar Rzayev
[6 Nov 2017 20:53]
MySQL Verification Team
miguel@tikal:~/Downloads $ sudo yum install mysql-utilities-1.6.5-1.el7.noarch.rpm Loaded plugins: fastestmirror, langpacks Examining mysql-utilities-1.6.5-1.el7.noarch.rpm: mysql-utilities-1.6.5-1.el7.noarch Marking mysql-utilities-1.6.5-1.el7.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package mysql-utilities.noarch 0:1.6.5-1.el7 will be installed --> Processing Dependency: mysql-connector-python >= 2.0.0 for package: mysql-utilities-1.6.5-1.el7.noarch base | 3.6 kB 00:00:00 epel/x86_64/metalink | 3.4 kB 00:00:00 extras | 3.4 kB 00:00:00 google-chrome | 951 B 00:00:00 mysql-connectors-community | 2.5 kB 00:00:00 mysql-tools-community | 2.5 kB 00:00:00 mysql57-community | 2.5 kB 00:00:00 nux-dextop | 2.9 kB 00:00:00 updates | 3.4 kB 00:00:00 google-chrome/primary | 2.0 kB 00:00:00 Loading mirror speeds from cached hostfile * base: linorg.usp.br * epel: mirror.uta.edu.ec * extras: ftp.unicamp.br * nux-dextop: mirror.li.nux.ro * updates: ftp.unicamp.br google-chrome 3/3 --> Running transaction check ---> Package mysql-connector-python.x86_64 0:2.1.7-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved =========================================================================================================================================================== Package Arch Version Repository Size =========================================================================================================================================================== Installing: mysql-utilities noarch 1.6.5-1.el7 /mysql-utilities-1.6.5-1.el7.noarch 3.5 M Installing for dependencies: mysql-connector-python x86_64 2.1.7-1.el7 mysql-connectors-community 241 k Transaction Summary =========================================================================================================================================================== Install 1 Package (+1 Dependent package) Total size: 3.7 M Total download size: 241 k Installed size: 4.6 M Is this ok [y/d/N]: y Downloading packages: mysql-connector-python-2.1.7-1.el7.x86_64.rpm | 241 kB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : mysql-connector-python-2.1.7-1.el7.x86_64 1 Installing : mysql-utilities-1.6.5-1.el7.noarch 2 Verifying : mysql-utilities-1.6.5-1.el7.noarch 1 Verifying : mysql-connector-python-2.1.7-1.el7.x86_64 2 Installed: mysql-utilities.noarch 0:1.6.5-1.el7 Dependency Installed: mysql-connector-python.x86_64 0:2.1.7-1.el7 Complete! miguel@tikal:~/Downloads $ mysqlfrm Usage: mysqlfrm --server=[user[:<pass>]@host[:<port>][:<socket>]|<login-path>[:<port>][:<socket>]] [path\tbl1.frm|db:tbl.frm] mysqlfrm: error: Nothing to do. You must specify a list of paths or files to read. See --help for more information and examples. miguel@tikal:~/Downloads $ miguel@tikal:~/Downloads $ lsb_release -d Description: CentOS Linux release 7.4.1708 (Core)
[6 Nov 2017 21:21]
Shahriyar Rzayev
For me the mysql-connector-python version is: $ rpm -qa | grep mysql-connector mysql-connector-python-8.0.4-0.1.dmr.el7.x86_64 Which I installed before. And during installation of mysql-utilities there was no conflict or error based on version of connector.
[7 Nov 2017 14:36]
Shahriyar Rzayev
Confirming that it is due to mysql-connector version: $ sudo yum install mysql-connector-python-2.1.7-1.el7.x86_64.rpm Loaded plugins: auto-update-debuginfo, fastestmirror Examining mysql-connector-python-2.1.7-1.el7.x86_64.rpm: mysql-connector-python-2.1.7-1.el7.x86_64 Marking mysql-connector-python-2.1.7-1.el7.x86_64.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package mysql-connector-python.x86_64 0:2.1.7-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved $ sudo yum install mysql-utilities-1.6.5-1.el7.noarch.rpm Loaded plugins: auto-update-debuginfo, fastestmirror Examining mysql-utilities-1.6.5-1.el7.noarch.rpm: mysql-utilities-1.6.5-1.el7.noarch Marking mysql-utilities-1.6.5-1.el7.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package mysql-utilities.noarch 0:1.6.5-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved $ mysqlfrm Usage: mysqlfrm --server=[user[:<pass>]@host[:<port>][:<socket>]|<login-path>[:<port>][:<socket>]] [path\tbl1.frm|db:tbl.frm] mysqlfrm: error: Nothing to do. You must specify a list of paths or files to read. See --help for more information and examples.
[8 Nov 2017 10:20]
MySQL Verification Team
Thank you for the feedback.
[root@CentOS7 ushastry]# rpm -qa|grep mysql
mysql-community-libs-compat-8.0.3-0.1.rc.el7.x86_64
mysql-community-common-8.0.3-0.1.rc.el7.x86_64
mysql57-community-release-el7-11.noarch
mysql-connector-python-8.0.4-0.1.dmr.el7.x86_64
mysql-community-server-8.0.3-0.1.rc.el7.x86_64
mysql-community-libs-8.0.3-0.1.rc.el7.x86_64
mysql-shell-8.0.0-0.1.dmr.el7.x86_64
mysql-community-client-8.0.3-0.1.rc.el7.x86_64
[root@CentOS7 ushastry]# python
Python 2.7.5 (default, Aug 4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
>>> quit
Use quit() or Ctrl-D (i.e. EOF) to exit
>>>
[root@CentOS7 ushastry]# yum install mysql-community-utilities
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos-distro.cavecreek.net
* extras: centos.aol.com
* updates: centos.mirrors.tds.net
No package mysql-community-utilities available.
Error: Nothing to do
[root@CentOS7 ushastry]# yum install mysql-utilities
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos-distro.cavecreek.net
* extras: centos.aol.com
* updates: centos.mirrors.tds.net
Resolving Dependencies
--> Running transaction check
---> Package mysql-utilities.noarch 0:1.6.5-1.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================================================================================================================
Package Arch Version Repository Size
================================================================================================================================================================================
Installing:
mysql-utilities noarch 1.6.5-1.el7 mysql-tools-community 836 k
Transaction Summary
================================================================================================================================================================================
Install 1 Package
Total download size: 836 k
Installed size: 3.5 M
Is this ok [y/d/N]: y
Downloading packages:
mysql-utilities-1.6.5-1.el7.noarch.rpm | 836 kB 00:00:16
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mysql-utilities-1.6.5-1.el7.noarch 1/1
Verifying : mysql-utilities-1.6.5-1.el7.noarch 1/1
Installed:
mysql-utilities.noarch 0:1.6.5-1.el7
Complete!
[root@CentOS7 ushastry]# mysqlfrm
Traceback (most recent call last):
File "/bin/mysqlfrm", line 27, in <module>
from mysql.utilities.common.tools import (check_python_version,
ImportError: No module named utilities.common.tools
[root@CentOS7 ushastry]#
[25 Apr 2018 21:56]
Robert Jacob
This seems to be an architecture problem: When the python connector is not installed (before the utilities), then the dependency is resolved to the 64bit version: [root@db2-au ~]# yum install mysql-utilities Loaded plugins: langpacks, ulninfo Resolving Dependencies --> Running transaction check ---> Package mysql-utilities.noarch 0:1.6.5-1.el7 will be installed --> Processing Dependency: mysql-connector-python >= 2.0.0 for package: mysql-utilities-1.6.5-1.el7.noarch --> Running transaction check ---> Package mysql-connector-python.x86_64 0:8.0.11-1.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================================================================================================================= Installing: mysql-utilities noarch 1.6.5-1.el7 mysql-tools-community 836 k Installing for dependencies: mysql-connector-python x86_64 8.0.11-1.el7 mysql-connectors-community 418 k Transaction Summary ============================================================================================================================================================================================================================================= Install 1 Package (+1 Dependent package) Total download size: 1.2 M The connector installs packages into /usr/lib64/python whereas the utilities put it into /usr/lib/python. There is 1 solution and 1 workaround: Solution: manually install the mysql-connector-python.noarch before the utilities. This installs an older version 2.0.4-1.el7 on my system Workaround: ln -s /usr/lib/python2.7/site-packages/mysql/utilities /usr/lib64/python2.7/site-packages/mysql/utilities
[25 Apr 2018 22:22]
Robert Jacob
Small correction to previous comment. The solution isn't quite working. The old version of the connector doesn't know about the new password encryptions in version 8 of MySQL. I had to revert to the symlink workaround instead and use the newer python connector
[13 Jul 2018 7:12]
MySQL Verification Team
Bug #90682 marked as duplicate of this one
[15 Jun 2019 7:11]
Reio Remma
Using mysqldbcompare with the default mysql-connector-python 8.0.16-1.el7 from @mysql-connectors-community still ends with the error:
Sat Jun 15 06:55:48 UTC 2019
Traceback (most recent call last):
File "/usr/bin/mysqldbcompare", line 28, in <module>
from mysql.utilities.common.tools import check_python_version
ImportError: No module named utilities.common.tools
I can confirm that the following fixed the issue for me as well:
ln -s /usr/lib/python2.7/site-packages/mysql/utilities /usr/lib64/python2.7/site-packages/mysql/utilities
