You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Project/LLRiseTabBarDemo/backend/database_setup_guide.md

5.6 KiB

数据库创建详细操作步骤

1. MySQL数据库安装

如果还没有安装MySQL请按照以下步骤安装

Windows系统安装MySQL

  1. 访问MySQL官方网站下载页面MySQL Community Server
  2. 选择Windows版本下载安装包推荐使用MySQL Installer
  3. 运行安装程序,选择"Developer Default"或"Server only"安装类型
  4. 按照安装向导提示完成安装设置root用户密码请记住这个密码
  5. 确保MySQL服务设置为自动启动

验证MySQL安装

打开命令提示符CMD或PowerShell输入以下命令验证MySQL是否正确安装

mysql --version

如果安装成功会显示MySQL的版本信息。

2. 启动MySQL服务

Windows系统

  1. 按下Win + R输入services.msc打开服务管理器
  2. 找到"MySQL80"服务(或类似名称)
  3. 确保服务状态为"正在运行",如果未运行,右键点击选择"启动"

3. 连接到MySQL服务器

使用命令行连接

打开命令提示符CMD或PowerShell输入以下命令连接到MySQL

mysql -u root -p

系统会提示输入密码输入您在安装MySQL时设置的root密码。

使用MySQL Workbench连接可选

如果您安装了MySQL Workbench可以通过图形界面连接

  1. 打开MySQL Workbench
  2. 点击左侧的"Local instance MySQL80"连接
  3. 输入密码并连接

4. 创建数据库

连接成功后执行以下SQL命令创建数据库

CREATE DATABASE secondhandmarket CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

执行成功后,您会看到类似以下输出:

Query OK, 1 row affected (0.02 sec)

5. 选择数据库

执行以下命令选择刚创建的数据库:

USE secondhandmarket;

输出:

Database changed

6. 创建表结构

执行以下SQL语句创建所需的表结构

创建users表

CREATE TABLE users (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    phone VARCHAR(20) NOT NULL UNIQUE,
    password VARCHAR(100) NOT NULL,
    nickname VARCHAR(50),
    avatar VARCHAR(255),
    gender VARCHAR(10),
    bio VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    last_login TIMESTAMP,
    status VARCHAR(20) DEFAULT 'ACTIVE'
);

创建items表

CREATE TABLE items (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(100) NOT NULL,
    description TEXT,
    price DECIMAL(10, 2) NOT NULL,
    category VARCHAR(50) NOT NULL,
    status VARCHAR(20) DEFAULT 'AVAILABLE',
    images TEXT,
    seller_id BIGINT NOT NULL,
    view_count INT DEFAULT 0,
    like_count INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (seller_id) REFERENCES users(id)
);

创建chat_messages表

CREATE TABLE chat_messages (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    sender_id BIGINT NOT NULL,
    receiver_id BIGINT NOT NULL,
    item_id BIGINT NOT NULL,
    content TEXT NOT NULL,
    is_read BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (sender_id) REFERENCES users(id),
    FOREIGN KEY (receiver_id) REFERENCES users(id),
    FOREIGN KEY (item_id) REFERENCES items(id)
);

7. 创建索引(提高查询性能)

为常用查询字段创建索引:

-- 为users表的phone字段创建索引
CREATE INDEX idx_users_phone ON users(phone);

-- 为items表的常用查询字段创建索引
CREATE INDEX idx_items_seller_id ON items(seller_id);
CREATE INDEX idx_items_category ON items(category);
CREATE INDEX idx_items_status ON items(status);
CREATE INDEX idx_items_price ON items(price);

-- 为chat_messages表的查询字段创建索引
CREATE INDEX idx_chat_messages_sender_receiver ON chat_messages(sender_id, receiver_id);
CREATE INDEX idx_chat_messages_receiver_id ON chat_messages(receiver_id);
CREATE INDEX idx_chat_messages_item_id ON chat_messages(item_id);

8. 验证表结构

执行以下命令查看创建的表:

SHOW TABLES;

输出应该包括:

+---------------------------+
| Tables_in_secondhandmarket |
+---------------------------+
| chat_messages             |
| items                     |
| users                     |
+---------------------------+

9. 配置应用程序连接

确保application.properties文件中的数据库配置正确:

spring.datasource.url=jdbc:mysql://localhost:3306/secondhandmarket?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=061723  # 这是您设置的MySQL密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# JPA配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

10. 测试连接

当您启动Spring Boot应用程序时它应该能够成功连接到MySQL数据库。如果连接失败请检查以下几点

  1. MySQL服务是否正在运行
  2. 数据库名称是否正确
  3. 用户名和密码是否正确
  4. 防火墙是否允许连接
  5. MySQL是否允许root用户从localhost连接

11. 注意事项

  1. 在生产环境中不建议使用root用户应该创建一个具有适当权限的新用户
  2. 确保数据库密码安全,不要硬编码在应用程序中
  3. 定期备份数据库
  4. 考虑使用连接池来优化数据库连接管理

故障排除

如果遇到连接问题请尝试以下命令检查MySQL用户权限

SELECT user, host FROM mysql.user;
GRANT ALL PRIVILEGES ON secondhandmarket.* TO 'root'@'localhost';
FLUSH PRIVILEGES;