linux

Linux环境下ThinkPHP数据库迁移指南

小樊
53
2025-08-31 15:51:27
栏目: 编程语言

以下是在Linux环境下使用ThinkPHP进行数据库迁移的指南:

一、准备工作

  1. 安装环境
    确保Linux系统已安装LAMP(Linux+Apache+MySQL+PHP)环境,可通过以下命令安装基础依赖:
    sudo apt update && sudo apt install apache2 mysql-server php php-mysql php-cli
    
  2. 安装Composer
    用于管理ThinkPHP依赖包:
    curl -sS https://getcomposer.org/installer | php
    sudo mv composer.phar /usr/local/bin/composer
    
  3. 部署ThinkPHP项目
    将项目文件上传至Linux服务器(如/var/www/html目录),并设置文件权限:
    sudo chown -R www-data:www-data /var/www/html/your_project
    sudo chmod -R 755 /var/www/html/your_project
    

二、配置数据库

  1. 修改配置文件
    在项目根目录的config/database.php中配置数据库连接信息(如主机、用户名、密码、数据库名):
    return [
        'type'     => 'mysql',
        'hostname' => 'localhost',
        'database' => 'your_database',
        'username' => 'root',
        'password' => 'your_password',
        'charset'  => 'utf8mb4',
    ];
    
  2. 测试数据库连接
    可通过命令行或项目代码测试连接是否正常。

三、执行数据库迁移

  1. 安装迁移组件
    若未安装,执行以下命令:
    composer require topthink/think-migration
    
  2. 初始化迁移工具
    php think migrate:install
    
  3. 创建迁移文件
    通过命令生成迁移文件(如创建用户表):
    php think make:migration CreateUserTable
    
    文件会生成在database/migrations目录,文件名包含时间戳(如20250831100000_create_user_table.php)。
  4. 编辑迁移文件
    打开迁移文件,使用up()down()方法定义表结构变更(推荐使用change()方法,自动处理回滚逻辑):
    use think\migration\Migrator;
    use think\migration\db\Column;
    
    class CreateUserTable extends Migrator
    {
        public function change()
        {
            $table = $this->table('users');
            $table->addColumn('username', 'string', ['limit' => 50])
                  ->addColumn('email', 'string', ['limit' => 100, 'null' => true])
                  ->addColumn('password', 'string', ['limit' => 255])
                  ->addTimestamps()
                  ->create();
        }
    }
    
  5. 执行迁移
    运行以下命令应用迁移,创建数据库表:
    php think migrate:run
    
  6. 回滚迁移(可选)
    若需撤销迁移,执行:
    php think migrate:rollback
    

四、填充初始数据(可选)

  1. 创建Seeder文件
    用于填充测试数据,命令如下:
    php think make:seed UserSeeder
    
  2. 编辑Seeder文件
    database/seeds目录下编辑文件,定义插入数据逻辑:
    use think\migration\Seeder;
    
    class UserSeeder extends Seeder
    {
        public function run()
        {
            $data = [
                ['username' => 'admin', 'email' => 'admin@example.com', 'password' => password_hash('123456', PASSWORD_DEFAULT)],
            ];
            $this->table('users')->insert($data)->save();
        }
    }
    
  3. 执行Seeder
    php think seed:run
    

五、注意事项

参考资料:

0
看了该问题的人还看了