mysql not listed as a DB choice when creating ReviewBoard site

294 views
Skip to first unread message

Ajoy Bhatia

unread,
Sep 5, 2015, 7:22:07 PM9/5/15
to reviewboard
Installed ReviewBoard 2.0.19 & other dependencies on Mac OS X Yosemite (10.10.5). Now, creating a ReviewBoard site. Here is what I get when I go through the "rb-site install /var/www/reviewboard.mysite.com" install process

* What database type will you be using?

    You can type either the name or the number from the list below.

    (1) sqlite3 (not supported for production use)

Database Type:


Note that MySQL is not listed as an available choice. Now, I do have MySQL installed and the MySQL server instance is running. I also have mysql-python installed correctly. Here is the console output of mysql-python installation:

%> sudo easy_install mysql-python
Password:
Searching for mysql-python
Best match: MySQL-python 1.2.5
Processing MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg
MySQL-python 1.2.5 is already the active version in easy-install.pth

Using /Library/Python/2.7/site-packages/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg
Processing dependencies for mysql-python
Finished processing dependencies for mysql-python
%>


Also, Python has no problem importing MySQLdb module:

%> python
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> exit()
%>


I would really appreciate it if someone can help me here, and tell me what to do to have mysql listed as an available database when creating a ReviewBoard site.

Thanks...
- Ajoy

Ajoy Bhatia

unread,
Sep 6, 2015, 12:53:31 PM9/6/15
to reviewboard
I opened rbsite.py and saw that the following code checks for MySQLdb module and, if present, MySQL should be listed as a choice. Here, for MySQL, names is an array containing only "MySQLdb"
 
    @classmethod
   
def has_modules(cls, names):
       
"""Returns True if one of the specified modules is installed."""
         
for name in names:
             
try:
                 __import__
(name)
                 
return True
             
except ImportError:
               
continue
 
       
return False

So I checked this call and there seems to be no error:

%> python
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> __import__("MySQLdb")
<module 'MySQLdb' from '/Library/Python/2.7/site-packages/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg/MySQLdb/__init__.pyc'>
>>> exit()
%>


So I really cannot understand why MySQL is not displayed as a choice.



Christian Hammond

unread,
Sep 6, 2015, 3:32:31 PM9/6/15
to revie...@googlegroups.com
Hi,

This usually indicates one of a few things:

1) The Python version/executable being used is different between the console and the script.

2) The Python path is different between the two.

3) The dynamic library search path (for MySQL .so files) is different between the two.

Can you try adding some print statements to that file to check what the import error looks like and to print sys.version and sys.path?

Christian

--
Supercharge your Review Board with Power Pack: https://www.reviewboard.org/powerpack/
Want us to host Review Board for you? Check out RBCommons: https://rbcommons.com/
Happy user? Let us know! https://www.reviewboard.org/users/
---
You received this message because you are subscribed to the Google Groups "reviewboard" group.
To unsubscribe from this group and stop receiving emails from it, send an email to reviewboard...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


--
-- 
Christian Hammond - chri...@beanbaginc.com
Review Board - https://www.reviewboard.org

Ajoy Bhatia

unread,
Sep 7, 2015, 11:34:01 AM9/7/15
to reviewboard, chri...@beanbaginc.com
Problem solved. Thanks for the tip. I have not worked with Python yet, so I had to look up how to print the exception details. Doing that gave me the following:

type:  <type 'exceptions.ImportError'>
value
:  dlopen(/Users/ab186095/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
 
Referenced from: /Users/ab186095/.python-eggs/MySQL_python-1.2.5-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so
 
Reason: image not found
['  File "/Library/Python/2.7/site-packages/ReviewBoard-2.0.19-py2.7.egg/reviewboard/cmdline/rbsite.py", line 123, in has_modules\n    __import__(name)\n', '  File "build/bdist.macosx-10.10-intel/egg/MySQLdb/__init__.py", line 19, in <module>\n', '  File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 7, in <module>\n', '  File "build/bdist.macosx-10.10-intel/egg/_mysql.py", line 6, in __bootstrap__\n']

The libmysqlclient.18.dylib file was in /usr/local/mysql/lib, and DYLD_LIBRARY_PATH had that directory in it. That is probably enough to satisfy the Python console but doesn't work for the script. Then, I saw this post: http://stackoverflow.com/questions/1099981/why-cant-python-find-shared-objects-that-are-in-directories-in-sys-path. However, on my Mac OSX Yosemite 10.10.5, there is no /etc/ld.so.conf or ldconfig. I tried setting LD_LIBRARY_PATH and also LIBRARY_PATH to include /usr/loca/mysql/lib but neither worked. So I created the following links under /usr/local/lib:

%> ln -s ../mysql/lib/libmysqlclient.18.dylib libmysqlclient.18.dylib
%> ln -s ../mysql/lib/libmysqlclient.dylib libmysqlclient.dylib

That did the trick. I think that the MySQL installation should create these links.

Thanks...
- Ajoy

On Sunday, September 6, 2015 at 12:32:31 PM UTC-7, Christian Hammond wrote:
Hi,

This usually indicates one of a few things:

1) The Python version/executable being used is different between the console and the script.

2) The Python path is different between the two.

3) The dynamic library search path (for MySQL .so files) is different between the two.

Can you try adding some print statements to that file to check what the import error looks like and to print sys.version and sys.path?

Christian
Reply all
Reply to author
Forward
0 new messages