数据库初始化脚本
本目录包含牛牛商城项目的数据库初始化脚本,用于创建数据库表结构和插入测试数据。
文件说明
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脚本
- 特性:
- 支持命令行参数配置数据库连接
- 自动检测数据库连接
- 可选择跳过表结构创建或测试数据插入
- 彩色输出和进度提示
- 执行完成后显示统计信息
使用方法
前置条件
-
安装MySQL客户端
# macOS brew install mysql-client # 或者安装完整的MySQL brew install mysql -
确保数据库服务可访问
- 本地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 (运输跟踪)
注意事项
- 权限要求: 执行脚本的数据库用户需要有CREATE、DROP、INSERT、SELECT权限
- 数据清理: 脚本会删除已存在的表,请确保备份重要数据
- 字符集: 所有表使用utf8mb4字符集,支持emoji和特殊字符
- 外键约束: 表之间设置了外键约束,删除数据时需注意依赖关系
- 测试环境: 建议在测试环境中先验证脚本的正确性
故障排除
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个核心业务表
- 提供一键初始化脚本
- 包含丰富的测试数据用于开发调试