Назад | Перейти на главную страницу

Проблема при установке MySQL с Linux

Я столкнулся со странной проблемой при установке MySQL на Linux.

Я пытался настроить MySQL в качестве базы данных для работы с Airflow. Ниже представлены мои конфигурации:

Operating System: Red Hat Enterprise Linux Server 7.7
python 3.7.2
anaconda 3
spark 2.45

Я могу подключиться к MySQL, но при выполнении команды airflow initdb возникает ошибка. Не уверен, почему возникает эта ошибка, но, безусловно, только из-за MySQL.

Ошибка:

[2020-04-09 05:19:00,990] {settings.py:253} INFO - settings.configure_orm(): Using pool settings. pool_size=5, max_overflow=10, pool_recycle=1800, pid=15499
Traceback (most recent call last):
  File "/home/npa/anaconda3/envs/python3.7.6/bin/airflow", line 25, in <module>
    from airflow.configuration import conf
  File "/home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/airflow/__init__.py", line 47, in <module>
    settings.initialize()
  File "/home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/airflow/settings.py", line 377, in initialize
    configure_orm()
  File "/home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/airflow/settings.py", line 266, in configure_orm
    engine = create_engine(SQL_ALCHEMY_CONN, **engine_args)
  File "/home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/sqlalchemy/engine/__init__.py", line 479, in create_engine
    return strategy.create(*args, **kwargs)
  File "/home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/sqlalchemy/engine/strategies.py", line 87, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 118, in dbapi
    return __import__("MySQLdb")
  File "/home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/MySQLdb/__init__.py", line 18, in <module>
    import _mysql
ImportError: /home/npa/anaconda3/envs/python3.7.6/lib/python3.7/site-packages/_mysql.cpython-37m-x86_64-linux-gnu.so: symbol mysql_real_escape_string_quote, version libmysqlclient_18 not defined in file libmysqlclient.so.18 with link time reference

Решил проблему, создав символическую ссылку на библиотеку. Т.е.

Фактическая библиотека находится в

/usr/local/mysql/lib

Затем я создал символическую ссылку в

/usr/lib

Используя команду:

sudo ln -s /usr/local/mysql/lib/libmysqlclient_18 /usr/lib/libmysqlclient_18

так что у меня есть следующее отображение:

ls -l libmysqlclient_18 

lrwxr-xr-x  1 root  wheel  44 16 Jul 14:01 libmysqlclient_18 -> /usr/local/mysql/lib/libmysqlclient_18

Я пробовал все, но, наконец, мне пришлось удалить все с сервера и снова установить анаконду и MySQL, чтобы исправить проблему.

Наконец, я получил команды от SO, которые работали. по некоторым причинам MySQL был поврежден и не удалялся должным образом. Вот несколько из них, которые наконец-то сработали и полностью удалили MySQL из моей системы.

yum remove mysql-server
pkill mysqld; pkill mysqld_safe
rpm -qa | grep mysql
yum remove <name displayed in above step-1>
sudo -H pip uninstall mysqlclient
sudo -H pip install --no-binary mysqlclient mysqlclient

rm -rf ~/anaconda3
conda install anaconda-clean
anaconda-clean

После этого я снова установил и настроил анаконду и MySQL, и проблема была решена.