Files
rustdesk-api-server/tutorial/sqlite2mysql.md
2025-01-25 16:46:21 +00:00

65 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 默认数据库(sqlite3)转Mysql数据库保姆级教程
### 本教程尽量保持源码安装与docker安装的通用性。
1、源码安装如果采用源码安装的跳过1、2步骤
```
# 将代码克隆到本地
git clone https://github.com/kingmo888/rustdesk-api-server.git
# 进入目录
cd rustdesk-api-server
# 安装依赖
pip install -r requirements.txt
```
2、覆盖数据库
全新安装时数据库为默认数据库,请将你正在使用的数据库覆盖到`/db/db.sqlite3`
3、 从sqlite数据库备份数据
执行命令:`python manage.py dumpdata > data.json`,将数据导出到根目录下的`data.json`中。
4、修改数据库配置
假设新建的mysql空数据库的信息如下
| 信息 | 值 |
| ------- | ------- |
| 数据库服务器IP | 192.168.1.33 |
| 数据库名 | rustdesk_api |
| 数据库用户名 | myuser |
| 数据库密码 | 123456 |
| 数据库端口 | 3099 |
在文件`rustdesk_server_api/settings.py`中依次修改如下配置:
- (1) `DATABASE_TYPE = os.environ.get("DATABASE_TYPE", 'SQLITE')`改为`DATABASE_TYPE = os.environ.get("DATABASE_TYPE", 'MYSQL')`
- (2) `MYSQL_HOST = os.environ.get("MYSQL_HOST", '127.0.0.1')`改为`MYSQL_HOST = os.environ.get("MYSQL_HOST", '192.168.1.33')`
- (3) `MYSQL_DBNAME = os.environ.get("MYSQL_DBNAME", '-')`改为`MYSQL_DBNAME = os.environ.get("MYSQL_DBNAME", 'rustdesk_api')`
- (4) `MYSQL_USER = os.environ.get("MYSQL_USER", '-')`改为`MYSQL_USER = os.environ.get("MYSQL_USER", 'myuser')`
- (5) `MYSQL_PASSWORD = os.environ.get("MYSQL_PASSWORD", '-')`改为`MYSQL_PASSWORD = os.environ.get("MYSQL_PASSWORD", '123456')`
- (6) `MYSQL_PORT = os.environ.get("MYSQL_PORT", '3306')`改为`MYSQL_PORT = os.environ.get("MYSQL_PORT", '3099')`
5、使用命令在mysql中创建表
`python manage.py makemigrations`
`python manage.py migrate`
通过mysql数据库管理工具查看数据库表`django_content_type`, `auth_permission`,如果存在数据,需要将这两个标清空,否则导入备份数据时会出错(提示重复导入数据)。
6、将备份数据导入mysql
执行`python manage.py loaddata data.json`
在加载数据的过程中最有可能的报错是提示导出的数据文件data.json中编码不是utf-8需要把data.json文件转为utf-8格式然后在加载数据到mysql中。
还有可能会提示其他原数据有问题导致的报错根据报错提示查看原数据的问题。修改之后再次从sqlite3导出数据然后导入数据。
7、docker使用
如果mysql数据库已经配置好则只需要将环境变量中mysql的部分按要求修改重启即可。
如果未配置mysql数据库则将`步骤6`中已经配置好的mysql数据库导出并在你需要的指定位置新建并还原然后将环境变量中mysql的部分按要求修改重启即可。