Files
niumalll/scripts/database/README.md

5.5 KiB
Raw Blame History

数据库初始化脚本

本目录包含牛牛商城项目的数据库初始化脚本,用于创建数据库表结构和插入测试数据。

文件说明

1. init_database.sql

  • 功能: 创建所有必要的数据库表结构
  • 包含内容:
    • 用户表 (users)
    • 供应商表 (suppliers)
    • 司机表 (drivers)
    • 车辆表 (vehicles)
    • 订单表 (orders)
    • 支付表 (payments)
    • 运输表 (transports)
    • 运输跟踪表 (transport_tracks)
    • 质检记录表 (quality_records)
    • 结算表 (settlements)
    • 外键约束关系

2. init_test_data.sql

  • 功能: 插入测试数据
  • 包含内容:
    • 管理员、采购商、贸易商、质检员等用户数据
    • 5个供应商的基本信息
    • 5个司机和车辆的信息
    • 5个订单及相关的支付、运输、质检、结算记录
    • 运输跟踪轨迹数据

3. run_init.sh

  • 功能: 一键执行数据库初始化的Shell脚本
  • 特性:
    • 支持命令行参数配置数据库连接
    • 自动检测数据库连接
    • 可选择跳过表结构创建或测试数据插入
    • 彩色输出和进度提示
    • 执行完成后显示统计信息

使用方法

前置条件

  1. 安装MySQL客户端

    # macOS
    brew install mysql-client
    
    # 或者安装完整的MySQL
    brew install mysql
    
  2. 确保数据库服务可访问

    • 本地MySQL服务已启动
    • 或者远程数据库连接正常

执行初始化

方法一使用Shell脚本推荐

# 进入脚本目录
cd /Users/aiotagro/vue/niumall/scripts/database

# 使用默认配置localhost:3306
./run_init.sh -u root -p your_password -d niumall

# 使用远程数据库
./run_init.sh \
  --host nj-cdb-3pwh2kz1.sql.tencentcdb.com \
  --port 20784 \
  --user jiebanke \
  --password 'aiot741$12346' \
  --database niumall

# 只创建表结构,跳过测试数据
./run_init.sh -u root -p password --skip-data

# 只插入测试数据,跳过表结构创建
./run_init.sh -u root -p password --skip-structure

方法二手动执行SQL文件

# 1. 创建表结构
mysql -h host -P port -u username -p database_name < init_database.sql

# 2. 插入测试数据
mysql -h host -P port -u username -p database_name < init_test_data.sql

脚本参数说明

参数 简写 说明 默认值
--host -h 数据库主机地址 localhost
--port -P 数据库端口 3306
--user -u 数据库用户名 root
--password -p 数据库密码
--database -d 数据库名称 niumall
--skip-structure 跳过表结构创建 false
--skip-data 跳过测试数据插入 false
--help 显示帮助信息 -

测试数据说明

用户数据

  • 管理员: admin/123456
  • 采购商: buyer001/123456, buyer002/123456
  • 贸易商: trader001/123456
  • 质检员: staff001/123456, staff002/123456

业务数据

  • 供应商: 5个不同地区的供应商内蒙古、山东、河南、新疆、黑龙江
  • 订单: 5个订单涵盖不同的牛种类型和交易状态
  • 运输: 包含运输中和已安排的运输任务
  • 质检: 装车前和到货质检记录
  • 结算: 预付款和尾款结算记录

数据库表关系

users (用户表)
├── orders.buyerId (买方)
├── orders.traderId (贸易商)
├── payments.user_id (支付用户)
├── quality_records.inspector_id (质检员)
└── settlements.approver_id (审批人)

suppliers (供应商表)
└── orders.supplierId (供应商)

drivers (司机表)
├── vehicles.driver_id (车辆司机)
├── transports.driver_id (运输司机)
└── transport_tracks.driver_id (跟踪司机)

vehicles (车辆表)
├── drivers.current_vehicle_id (司机当前车辆)
└── transports.vehicle_id (运输车辆)

orders (订单表)
├── payments.order_id (订单支付)
├── transports.order_id (订单运输)
├── transport_tracks.order_id (运输跟踪)
├── quality_records.order_id (质检记录)
└── settlements.order_id (结算记录)

transports (运输表)
└── transport_tracks.transport_id (运输跟踪)

注意事项

  1. 权限要求: 执行脚本的数据库用户需要有CREATE、DROP、INSERT、SELECT权限
  2. 数据清理: 脚本会删除已存在的表,请确保备份重要数据
  3. 字符集: 所有表使用utf8mb4字符集支持emoji和特殊字符
  4. 外键约束: 表之间设置了外键约束,删除数据时需注意依赖关系
  5. 测试环境: 建议在测试环境中先验证脚本的正确性

故障排除

1. MySQL客户端未安装

# macOS安装MySQL客户端
brew install mysql-client

# 添加到PATH如果需要
echo 'export PATH="/opt/homebrew/opt/mysql-client/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

2. 数据库连接失败

  • 检查数据库服务是否启动
  • 验证主机地址、端口、用户名、密码是否正确
  • 确认网络连接和防火墙设置

3. 权限不足

-- 为用户授予必要权限
GRANT CREATE, DROP, INSERT, SELECT, UPDATE, DELETE ON niumall.* TO 'username'@'%';
FLUSH PRIVILEGES;

4. 外键约束错误

  • 确保按照正确顺序创建表
  • 检查外键引用的表和字段是否存在
  • 验证数据类型是否匹配

更新日志

  • 2024-01-21: 初始版本,包含完整的表结构和测试数据
  • 支持10个核心业务表
  • 提供一键初始化脚本
  • 包含丰富的测试数据用于开发调试