MySQL配置说明.md 3.6 KB

MySQL数据库配置说明

功能说明

系统现在支持双数据库存储:

  • SQLite:本地数据库(dibang.db),用于快速访问和备份
  • MySQL:远程数据库,用于数据集中管理和多用户访问

所有数据操作会同时写入两个数据库,确保数据冗余和可用性。

配置步骤

1. 安装MySQL依赖

确保已安装MySQL依赖包:

pip install -r requirements.txt

这会安装 pymysql 包。

2. 创建MySQL数据库

在MySQL服务器上创建数据库:

CREATE DATABASE dibang CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. 配置MySQL连接信息

编辑 config.py 文件,修改以下配置:

# MySQL数据库配置
MYSQL_CONFIG = {
    'host': '你的MySQL服务器地址',      # 例如: '192.168.1.100' 或 'localhost'
    'port': 3306,                      # MySQL端口,默认3306
    'user': '你的MySQL用户名',          # 例如: 'root'
    'password': '你的MySQL密码',        # 你的MySQL密码
    'database': 'dibang',              # 数据库名称(建议保持'dibang')
    'charset': 'utf8mb4'               # 字符集
}

# 是否启用MySQL存储(True=启用,False=仅使用SQLite)
ENABLE_MYSQL = True

# 如果MySQL连接失败,是否继续使用SQLite(True=继续,False=抛出异常)
CONTINUE_ON_MYSQL_ERROR = True

4. 测试连接

启动程序后,系统会自动:

  • 连接SQLite数据库(本地)
  • 如果启用了MySQL,尝试连接MySQL数据库并创建表结构

如果MySQL连接失败,系统会:

  • 记录警告日志
  • 如果 CONTINUE_ON_MYSQL_ERROR = True,继续使用SQLite,不影响程序运行
  • 如果 CONTINUE_ON_MYSQL_ERROR = False,会抛出异常,程序可能无法启动

配置示例

示例1:本地MySQL

MYSQL_CONFIG = {
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': '123456',
    'database': 'dibang',
    'charset': 'utf8mb4'
}

示例2:远程MySQL服务器

MYSQL_CONFIG = {
    'host': '192.168.1.100',
    'port': 3306,
    'user': 'dibang_user',
    'password': 'your_password',
    'database': 'dibang',
    'charset': 'utf8mb4'
}

示例3:仅使用SQLite(禁用MySQL)

ENABLE_MYSQL = False

注意事项

  1. 首次运行:程序会自动在MySQL数据库中创建所需的表结构
  2. 数据同步:所有插入、更新、删除操作都会同时写入两个数据库
  3. 读取操作:目前仍从SQLite读取数据(保持原有行为)
  4. 连接失败:如果MySQL连接失败,SQLite仍可正常工作,但数据只会保存在SQLite中
  5. ID不一致:由于SQLite和MySQL各自维护自增ID,两边的ID可能不一致,但不影响功能

故障排查

问题1:无法连接MySQL

症状:程序运行正常,但MySQL没有数据

解决方法:

  1. 检查MySQL服务是否启动
  2. 检查 config.py 中的连接信息是否正确
  3. 检查MySQL用户权限是否足够
  4. 检查防火墙是否开放3306端口
  5. 查看程序日志中的警告信息

问题2:MySQL连接时断时续

解决方法:

  • 系统会自动检测连接并重新连接
  • 如果问题持续,检查网络连接或MySQL服务器状态

问题3:不想使用MySQL

解决方法:

  • 在 config.py 中设置 ENABLE_MYSQL = False
  • 系统将仅使用SQLite数据库

数据库表结构

系统会在MySQL中创建以下表:

  • weighing_slips - 地磅单表
  • companies - 公司名称表
  • cargos - 货物名称表
  • purchase_plans - 采购计划表

表结构会自动与SQLite保持一致。