Django项目默认的数据库是SQLite,而我们公司运维工具平台使用的数据库是mysql(mariadb),因此需要修改django数据库到mysql.
我是用的是centos8系统,之前已经安装mariadb版本是5.5.68,修改django数据库步骤如下,同时遇到以下几个问题。
一、修改Django项目的setting.py和__init__.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'inspect_test', #你的数据库名称
'USER':'root',
'PASSWORD':'testroot', #你的mysql数据库用户名和密码
'HOST': 'localhost', #如果是本地数据库,则填写localhost,如果是远端数据库则填写远端IP地址
'PORT': '3306',
'OPTIONS': { #使用mariadb需要设置options字段
'charset': 'utf8mb4',
'collation': 'utf8mb4_unicode_ci',
},
},
}
修改与setting.py同目录的__init__.py,添加如下语句:
import pymysql
pymysql.install_as_MySQLdb()
二、设置完setting.py和__init__.py后,迁移数据库时报错
(py3_conda) [root@xxx inspect_test]# python manage.py makemigrations
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/core/management/init.py", line 442, in execute_from_command_line
utility.execute()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/core/management/init.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/core/management/base.py", line 412, in run_from_argv
self.execute(*args, **cmd_options)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/core/management/base.py", line 458, in execute
output = self.handle(*args, **options)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/core/management/base.py", line 106, in wrapper
res = handle_func(*args, **kwargs)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/core/management/commands/makemigrations.py", line 156, in handle
loader.check_consistent_history(connection)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/migrations/loader.py", line 313, in check_consistent_history
applied = recorder.applied_migrations()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/migrations/recorder.py", line 81, in applied_migrations
if self.has_table():
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/migrations/recorder.py", line 57, in has_table
with self.connection.cursor() as cursor:
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/backends/base/base.py", line 330, in cursor
return self._cursor()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/backends/base/base.py", line 306, in _cursor
self.ensure_connection()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/backends/base/base.py", line 289, in ensure_connection
self.connect()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/utils/asyncio.py", line 26, in inner
return func(*args, **kwargs)
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/backends/base/base.py", line 272, in connect
self.init_connection_state()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 257, in init_connection_state
super().init_connection_state()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/backends/base/base.py", line 239, in init_connection_state
self.check_database_version_supported()
File "/root/miniconda3/envs/py3_conda/lib/python3.8/site-packages/django/db/backends/base/base.py", line 214, in check_database_version_supported
raise NotSupportedError(
django.db.utils.NotSupportedError: MariaDB 10.4 or later is required (found 5.5.68).
(py3_conda) [root@xxx inspect_test]#
但是升级mariadb数据库版本时有遇到错误,缺少依赖项
(py3_conda) [root@xxx ~]# sudo yum install MariaDB-server MariaDB-client
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: mirror.nyist.edu.cn
mariadb | 3.4 kB 00:00:00
Not using downloaded mariadb/repomd.xml because it is older than what we have:
Current : Sat Nov 11 12:21:21 2023
Downloaded: Sat Nov 11 05:15:16 2023
Resolving Dependencies
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.6.16-1.el8 will be installed
--> Processing Dependency: MariaDB-common for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libcrypto.so.1.1(OPENSSL_1_1_0)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libpmem.so.1(LIBPMEM_1.0)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_0)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libssl.so.1.1(OPENSSL_1_1_1)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.22)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libcrypto.so.1.1()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libpmem.so.1()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libssl.so.1.1()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
---> Package MariaDB-server.x86_64 0:10.6.16-1.el8 will be installed
--> Processing Dependency: galera-4 for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.22)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libsystemd.so.0(LIBSYSTEMD_227)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.6.16-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.22)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
---> Package MariaDB-common.x86_64 0:10.6.16-1.el8 will be installed
--> Processing Dependency: MariaDB-shared for package: MariaDB-common-10.6.16-1.el8.x86_64
---> Package MariaDB-server.x86_64 0:10.6.16-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.22)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libsystemd.so.0(LIBSYSTEMD_227)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
---> Package galera-4.x86_64 0:26.4.16-1.el8 will be installed
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: socat for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libboost_program_options.so.1.66.0()(64bit) for package: galera-4-26.4.16-1.el8.x86_64
---> Package libpmem.x86_64 0:1.5.1-2.1.el7 will be installed
---> Package openssl11-libs.x86_64 1:1.1.1k-5.el7 will be installed
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.6.16-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.22)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: MariaDB-client-10.6.16-1.el8.x86_64
---> Package MariaDB-compat.x86_64 0:10.6.16-1.el8 will be obsoleting
---> Package MariaDB-server.x86_64 0:10.6.16-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.22)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libsystemd.so.0(LIBSYSTEMD_227)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-server-10.6.16-1.el8.x86_64
---> Package galera-4.x86_64 0:26.4.16-1.el8 will be installed
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libboost_program_options.so.1.66.0()(64bit) for package: galera-4-26.4.16-1.el8.x86_64
---> Package mariadb-libs.x86_64 1:5.5.68-1.el7 will be obsoleted
--> Processing Dependency: mariadb-libs(x86-64) = 1:5.5.68-1.el7 for package: 1:mariadb-devel-5.5.68-1.el7.x86_64
---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
--> Finished Dependency Resolution
Error: Package: MariaDB-server-10.6.16-1.el8.x86_64 (mariadb)
Requires: libsystemd.so.0(LIBSYSTEMD_227)(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
Error: Package: MariaDB-server-10.6.16-1.el8.x86_64 (mariadb)
Requires: libcrypt.so.1(XCRYPT_2.0)(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libncurses.so.6()(64bit)
Error: Package: MariaDB-server-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: MariaDB-server-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libcrypt.so.1(XCRYPT_2.0)(64bit)
Error: Package: MariaDB-server-10.6.16-1.el8.x86_64 (mariadb)
Requires: libc.so.6(GLIBC_2.28)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: 1:mariadb-devel-5.5.68-1.el7.x86_64 (@base)
Requires: mariadb-libs(x86-64) = 1:5.5.68-1.el7
Removing: 1:mariadb-libs-5.5.68-1.el7.x86_64 (@anaconda)
mariadb-libs(x86-64) = 1:5.5.68-1.el7
Obsoleted By: MariaDB-compat-10.6.16-1.el8.x86_64 (mariadb)
mariadb-libs(x86-64) = 1:10.1.48-1.el7.centos
Available: MariaDB-compat-10.6.14-1.el8.x86_64 (mariadb)
mariadb-libs(x86-64) = 1:10.1.48-1.el7.centos
Available: MariaDB-compat-10.6.15-1.el8.x86_64 (mariadb)
mariadb-libs(x86-64) = 1:10.1.48-1.el7.centos
Error: Package: MariaDB-server-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.22)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libtinfo.so.6()(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libboost_program_options.so.1.66.0()(64bit)
Error: Package: MariaDB-server-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libc.so.6(GLIBC_2.28)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.22)(64bit)
Error: Package: MariaDB-client-10.6.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
(py3_conda) [root@xxx ~]#
根据gpt建议按以下步骤处理,但是问题仍未解决:
1. **清理RPM数据库:**
尝试清理RPM数据库并重新验证。
```bash
sudo rpm --rebuilddb
```
2. **手动安装MariaDB兼容性库和依赖项:**
尝试手动安装MariaDB兼容性库以及可能缺失的依赖项。
```bash
sudo yum install MariaDB-compat openssl11-libs
```
3. **卸载旧版本的mariadb-libs:**
由于新版本MariaDB-compat已经提供了对mariadb-libs的替代,您可以尝试卸载旧版本的mariadb-libs。
```bash
sudo yum remove mariadb-libs
```
然后重新运行更新命令:
```bash
sudo yum update
```
4. **使用`--skip-broken`选项:**
尝试使用`--skip-broken`选项来尝试绕过依赖性问题,但请注意,这可能会导致一些软件包无法正确安装,因此请谨慎使用。
```bash
sudo yum update --skip-broken
```
(py3_conda) [root@xxx ~]# sudo yum remove mariadb-devel
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package mariadb-devel.x86_64 1:5.5.68-1.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================
Removing:
mariadb-devel x86_64 1:5.5.68-1.el7 @base 3.3 M
Transaction Summary
===============================================================================================================================================================================================
Remove 1 Package
Installed size: 3.3 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Erasing : 1:mariadb-devel-5.5.68-1.el7.x86_64 1/1
Verifying : 1:mariadb-devel-5.5.68-1.el7.x86_64 1/1
Removed:
mariadb-devel.x86_64 1:5.5.68-1.el7
Complete!
(py3_conda) [root@xxx ~]#
(py3_conda) [root@xxx ~]# sudo yum install MariaDB-compat openssl11-libs
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: mirror.nyist.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package MariaDB-compat.x86_64 0:10.6.16-1.el8 will be obsoleting
--> Processing Dependency: MariaDB-common for package: MariaDB-compat-10.6.16-1.el8.x86_64
---> Package mariadb-libs.x86_64 1:5.5.68-1.el7 will be obsoleted
---> Package openssl11-libs.x86_64 1:1.1.1k-5.el7 will be installed
--> Running transaction check
---> Package MariaDB-common.x86_64 0:10.6.16-1.el8 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================
Installing:
MariaDB-compat x86_64 10.6.16-1.el8 mariadb 2.2 M
replacing mariadb-libs.x86_64 1:5.5.68-1.el7
openssl11-libs x86_64 1:1.1.1k-5.el7 epel 1.5 M
Installing for dependencies:
MariaDB-common x86_64 10.6.16-1.el8 mariadb 88 k
Transaction Summary
===============================================================================================================================================================================================
Install 2 Packages (+1 Dependent package)
Total download size: 3.7 M
Is this ok [y/d/N]: y
Downloading packages:
(1/3): openssl11-libs-1.1.1k-5.el7.x86_64.rpm | 1.5 MB 00:00:01
MariaDB-compat-10.6.16-1.el8.x FAILED
http://yum.mariadb.org/10.4/centos8-amd64/rpms/MariaDB-compat-10.6.16-1.el8.x86_64.rpm: [Errno 14] HTTP Error 404 - Not Found ] 0.0 B/s | 1.4 MB --:--:-- ETA
Trying other mirror.
To address this issue please refer to the below wiki article
https://wiki.centos.org/yum-errors
If above article doesn't help to resolve this issue please use https://bugs.centos.org/.
MariaDB-common-10.6.16-1.el8.x FAILED
http://yum.mariadb.org/10.4/centos8-amd64/rpms/MariaDB-common-10.6.16-1.el8.x86_64.rpm: [Errno 14] HTTP Error 404 - Not Found ] 0.0 B/s | 1.4 MB --:--:-- ETA
Trying other mirror.
Error downloading packages:
MariaDB-common-10.6.16-1.el8.x86_64: [Errno 256] No more mirrors to try.
MariaDB-compat-10.6.16-1.el8.x86_64: [Errno 256] No more mirrors to try.
(py3_conda) [root@xxx ~]#
一种解决方法是尝试切换到另一个镜像源,或者等待一段时间,然后再次尝试。您可以尝试运行以下命令更改镜像源:
```bash
sudo yum-config-manager --disable mariadb
sudo yum clean all
sudo yum makecache
sudo yum install MariaDB-compat openssl11-libs
```
这将禁用MariaDB的yum仓库,清除所有缓存,然后重新启用仓库并安装所需的软件包。
如果问题仍然存在,您可能需要手动下载这些软件包并手动安装。您可以从MariaDB官方网站下载所需的软件包,然后使用`rpm`命令手动安装:
```bash
sudo rpm -Uvh http://yum.mariadb.org/10.4/centos8-amd64/rpms/MariaDB-common-10.6.16-1.el8.x86_64.rpm
sudo rpm -Uvh http://yum.mariadb.org/10.4/centos8-amd64/rpms/MariaDB-compat-10.6.16-1.el8.x86_64.rpm
```
至此openssl11-libs已经成功安装了
三、升级mariadb版本到10.4版本
1、修改MariaDB.repo文件,设置镜像源
sudo tee /etc/yum.repos.d/MariaDB.repo<<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
2、安装mariadb新版本,但安装成了5.5.68版本
(py3_conda) [root@xxx ~]# sudo yum install mariadb-server mariadb
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* epel: mirror.01link.hk
Resolving Dependencies
--> Running transaction check
---> Package mariadb.x86_64 1:5.5.68-1.el7 will be installed
--> Processing Dependency: mariadb-libs(x86-64) = 1:5.5.68-1.el7 for package: 1:mariadb-5.5.68-1.el7.x86_64
---> Package mariadb-server.x86_64 1:5.5.68-1.el7 will be installed
--> Processing Dependency: perl-DBD-MySQL for package: 1:mariadb-server-5.5.68-1.el7.x86_64
--> Running transaction check
---> Package mariadb-libs.x86_64 1:5.5.68-1.el7 will be installed
---> Package perl-DBD-MySQL.x86_64 0:4.023-6.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================
Installing:
mariadb x86_64 1:5.5.68-1.el7 base 8.8 M
mariadb-server x86_64 1:5.5.68-1.el7 base 11 M
Installing for dependencies:
mariadb-libs x86_64 1:5.5.68-1.el7 base 760 k
perl-DBD-MySQL x86_64 4.023-6.el7 base 140 k
Transaction Summary
===============================================================================================================================================================================================
Install 2 Packages (+2 Dependent packages)
Total download size: 21 M
Installed size: 112 M
Is this ok [y/d/N]: y
Downloading packages:
(1/4): mariadb-libs-5.5.68-1.el7.x86_64.rpm | 760 kB 00:00:07
(2/4): mariadb-5.5.68-1.el7.x86_64.rpm | 8.8 MB 00:00:13
(3/4): perl-DBD-MySQL-4.023-6.el7.x86_64.rpm | 140 kB 00:00:00
(4/4): mariadb-server-5.5.68-1.el7.x86_64.rpm | 11 MB 00:00:07
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 1.5 MB/s | 21 MB 00:00:14
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 1:mariadb-libs-5.5.68-1.el7.x86_64 1/4
Installing : perl-DBD-MySQL-4.023-6.el7.x86_64 2/4
Installing : 1:mariadb-5.5.68-1.el7.x86_64 3/4
Installing : 1:mariadb-server-5.5.68-1.el7.x86_64 4/4
Verifying : perl-DBD-MySQL-4.023-6.el7.x86_64 1/4
Verifying : 1:mariadb-server-5.5.68-1.el7.x86_64 2/4
Verifying : 1:mariadb-libs-5.5.68-1.el7.x86_64 3/4
Verifying : 1:mariadb-5.5.68-1.el7.x86_64 4/4
Installed:
mariadb.x86_64 1:5.5.68-1.el7 mariadb-server.x86_64 1:5.5.68-1.el7
Dependency Installed:
mariadb-libs.x86_64 1:5.5.68-1.el7 perl-DBD-MySQL.x86_64 0:4.023-6.el7
Complete!
3、修改MariaDB.repo文件
sudo vi /etc/yum.repos.d/MariaDB.repo
# MariaDB 10.4 CentOS repository list - created 2023-11-20 10:00 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
4、删除老版本mariadb及依赖项
sudo yum remove mariadb mariadb-server mariadb-libs
sudo yum clean all
**Disable the MariaDB repository temporarily:**
sudo yum --disablerepo=mariadb install MariaDB-server MariaDB-client
**Configure the repository to be skipped if it is unavailable:**
sudo yum-config-manager --save --setopt=mariadb.skip_if_unavailable=true
但是安装mariadb仍报错:
(py3_conda) [root@xxx ~]# sudo yum install MariaDB-server MariaDB-client
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 6.4 kB 00:00:00
* epel: mirror.01link.hk
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
mariadb | 3.4 kB 00:00:00
updates | 2.9 kB 00:00:00
mariadb/updateinfo FAILED
http://yum.mariadb.org/10.4/centos8-amd64/repodata/4e08b6bd7f0693236aac9cd9ea54c0093961ea918db22eaa54a46d80027cc3ec-updateinfo.xml.gz: [Errno 14] HTTPS Error 403 - Forbidden0 B --:--:-- ETA
Trying other mirror.
To address this issue please refer to the below wiki article
https://wiki.centos.org/yum-errors
If above article doesn't help to resolve this issue please use https://bugs.centos.org/.
mariadb/primary_db FAILED
http://yum.mariadb.org/10.4/centos8-amd64/repodata/95fa487fa3e89ed42080654444419f8bcb772fa561d8c481a4b81c605062cec5-primary.sqlite.bz2: [Errno 14] HTTPS Error 403 - Forbidden B --:--:-- ETA
Trying other mirror.
mariadb/primary_db | 65 kB 00:00:05
Resolving Dependencies
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.4.32-1.el8 will be installed
--> Processing Dependency: MariaDB-common for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
---> Package MariaDB-server.x86_64 0:10.4.32-1.el8 will be installed
--> Processing Dependency: galera-4 for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.4.32-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
---> Package MariaDB-common.x86_64 0:10.4.32-1.el8 will be installed
--> Processing Dependency: MariaDB-shared for package: MariaDB-common-10.4.32-1.el8.x86_64
---> Package MariaDB-server.x86_64 0:10.4.32-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
---> Package galera-4.x86_64 0:26.4.16-1.el8 will be installed
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: socat for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libboost_program_options.so.1.66.0()(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Running transaction check
---> Package MariaDB-client.x86_64 0:10.4.32-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: MariaDB-client-10.4.32-1.el8.x86_64
---> Package MariaDB-compat.x86_64 0:10.4.32-1.el8 will be installed
---> Package MariaDB-server.x86_64 0:10.4.32-1.el8 will be installed
--> Processing Dependency: libcrypt.so.1(XCRYPT_2.0)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.28)(64bit) for package: MariaDB-server-10.4.32-1.el8.x86_64
---> Package galera-4.x86_64 0:26.4.16-1.el8 will be installed
--> Processing Dependency: libstdc++.so.6(CXXABI_1.3.8)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.20)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libstdc++.so.6(GLIBCXX_3.4.21)(64bit) for package: galera-4-26.4.16-1.el8.x86_64
--> Processing Dependency: libboost_program_options.so.1.66.0()(64bit) for package: galera-4-26.4.16-1.el8.x86_64
---> Package socat.x86_64 0:1.7.3.2-2.el7 will be installed
--> Finished Dependency Resolution
Error: Package: MariaDB-client-10.4.32-1.el8.x86_64 (mariadb)
Requires: libncurses.so.6()(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit)
Error: Package: MariaDB-server-10.4.32-1.el8.x86_64 (mariadb)
Requires: libc.so.6(GLIBC_2.28)(64bit)
Error: Package: MariaDB-client-10.4.32-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
Error: Package: MariaDB-client-10.4.32-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit)
Error: Package: MariaDB-client-10.4.32-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: MariaDB-client-10.4.32-1.el8.x86_64 (mariadb)
Requires: libc.so.6(GLIBC_2.28)(64bit)
Error: Package: MariaDB-client-10.4.32-1.el8.x86_64 (mariadb)
Requires: libcrypt.so.1(XCRYPT_2.0)(64bit)
Error: Package: MariaDB-server-10.4.32-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(CXXABI_1.3.8)(64bit)
Error: Package: galera-4-26.4.16-1.el8.x86_64 (mariadb)
Requires: libboost_program_options.so.1.66.0()(64bit)
Error: Package: MariaDB-server-10.4.32-1.el8.x86_64 (mariadb)
Requires: libcrypt.so.1(XCRYPT_2.0)(64bit)
Error: Package: MariaDB-server-10.4.32-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.20)(64bit)
Error: Package: MariaDB-client-10.4.32-1.el8.x86_64 (mariadb)
Requires: libtinfo.so.6()(64bit)
Error: Package: MariaDB-server-10.4.32-1.el8.x86_64 (mariadb)
Requires: libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
(py3_conda) [root@xxx ~]#
5、原因是缺少依赖项,安装依赖项
sudo yum install ncurses-libs libstdc++ libstdc++-devel boost-program-options libcrypt libtinfo
sudo yum install epel-release
sudo yum install libncurses libstdc++ boost-program-options libcrypt libtinfo
sudo yum install MariaDB-server MariaDB-client
sudo yum install ncurses-libs
sudo yum update
sudo yum install epel-release
sudo yum update
sudo yum provides 'libstdc++.so.6()(64bit)'
sudo yum provides 'libstdc++.so.6(CXXABI_1.3.8)(64bit)'
sudo yum provides 'libstdc++.so.6(GLIBCXX_3.4.20)(64bit)'
sudo yum provides 'libstdc++.so.6(GLIBCXX_3.4.21)(64bit)'
sudo yum provides 'libcrypt.so.1(XCRYPT_2.0)(64bit)'
sudo yum provides 'libboost_program_options.so.1.66.0()(64bit)'
sudo yum install libstdc++-8.4.1-1.el8.x86_64
sudo yum install libcrypt-2.28-127.el8.x86_64
sudo yum install boost-1.66.0-10.el8.x86_64
sudo yum install ncurses-libs
sudo yum install libstdc++ libc libcrypt libtinfo
sudo yum provides 'libboost_program_options.so.1.66.0()(64bit)'
sudo yum install <package_providing_libboost_program_options>
sudo yum install MariaDB-server MariaDB-client
sudo yum install ncurses-libs
sudo yum install libstdc++-8.4.0-2.el8.0.1.x86_64
sudo yum install glibc-2.28-151.el8.x86_64
sudo yum install libcrypt-2.28-151.el8.x86_64
sudo yum install boost-1.66.0-10.el8.x86_64
在此修改MariaDB.repo:
sudo tee /etc/yum.repos.d/MariaDB.repo <<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
sudo yum install ncurses-libs
sudo yum install MariaDB-server MariaDB-client
sudo wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
sudo chmod +x mariadb_repo_setup
sudo ./mariadb_repo_setup
sudo yum --disablerepo=mariadb install MariaDB-server MariaDB-client
sudo sed -i 's/https/http/' /etc/yum.repos.d/mariadb.repo
sudo yum --disablerepo=mariadb install MariaDB-server MariaDB-client
至此mariadb 10.4版本已经安装成功了
6、设置mariadb数据库
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE your_database;
GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'localhost'
FLUSH PRIVILEGES
四、设置Django文件,与mysql数据库联动
1、设置django文件的setting.py文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'inspect_test',
'USER': 'your_database_user',
'PASSWORD': 'your_database_password',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {
'charset': 'utf8mb4',
'collation': 'utf8mb4_unicode_ci',
},
},
}
2、修改django项目的model.py文件,需要设置default值,否则迁移数据库时会报错
from django.db import models
class Device(models.Model):
name = models.CharField(max_length=100, blank=True, unique=True, null=True, db_column='name', default='', help_text='设备名')
brand = models.CharField(max_length=100, blank=True, null=True, db_column='brand', default='', help_text='设备品牌')
type1 = models.CharField(max_length=100, blank=True, null=True, db_column='type1', default='', help_text='设备类型')
command = models.CharField(max_length=100, blank=True, null=True, db_column='command', default='', help_text='设备命令')
template = models.CharField(max_length=100, blank=True, unique=True, null=True, db_column='template', default='', help_text='设备模板')
standard = models.CharField(max_length=100, blank=True, unique=True, null=True, db_column='standard', default='', help_text='设备标准')
err_message = models.CharField(max_length=100, blank=True, unique=True, null=True, db_column='err_message', default='', help_text='设备错误信息')
def __str__(self):
return f"{self.name} - {self.brand} - {self.type1} - {self.command} - {self.template} - {self.standard} - {self.err_message}"
3、迁移数据库
python manage.py makemigrations
python manage.py migrate
五、数据库去重
允许web页面可以提交重复数据,但是数据库中对数据库去重
修改models.py,增加class meta字段,定义以'name', 'brand', 'type1', 'err_message'组合去重
from django.db import models
class Device(models.Model):
name = models.CharField(max_length=100, blank=True, unique=True, null=True, db_column='name', default='', help_text='设备名')
brand = models.CharField(max_length=100, blank=True, null=True, db_column='brand', default='', help_text='设备品牌')
type1 = models.CharField(max_length=100, blank=True, null=True, db_column='type1', default='', help_text='设备类型')
command = models.CharField(max_length=300, blank=True, null=True, db_column='command', default='', help_text='设备命令')
template = models.CharField(max_length=1000, blank=True, null=True, db_column='template', default='', help_text='设备模板')
standard = models.CharField(max_length=300, blank=True, null=True, db_column='standard', default='', help_text='设备标准')
err_message = models.CharField(max_length=300, blank=True, null=True, db_column='err_message', default='', help_text='设备错误信息')
def __str__(self):
return f"{self.name} - {self.brand} - {self.type1} - {self.command} - {self.template} - {self.standard} - {self.err_message}"
class Meta:
# Define a unique constraint on the combination of 'name', 'brand', 'type1' and 'err_message'
unique_together = ['name', 'brand', 'type1', 'err_message']