zoukankan      html  css  js  c++  java
  • laravel 连接同一服务器上多个数据库操作 、 连接多个不同服务器上的不同数据库操作以及多个数据库操作的事务处理

    !注意:标红的要注意区分开

    第一步、配置.env文件(同一服务器上多个数据库)

    DB_CONNECTION=pgsql
    DB_HOST=IP(例如:127.0.0.1)
    DB_PORT=端口号(例如:5432)
    DB_DATABASE=连接的第一个数据库名(例如:user)
    DB_USERNAME=账号(例如:root)
    DB_PASSWORD=密码(例如:root)
    DB_DATABASE2=连接的第二个数据库名(例如:user2)
    DB_DATABASE3=连接的第三个数据库名(例如:user3)

     第一步、配置.env文件(多个服务器上的数据库)

    第二部分把不相同的改改就行了,注意区分

    第二部、配置config/database.php(上面两个第一步的配置是差不多的,注意区分好就行了)

    //这个是默认的

    'pgsql' => [
      'driver' => 'pgsql',
      'host' => env('DB_HOST', '127.0.0.1'),
      'port' => env('DB_PORT', '5432'),
      'database' => env('DB_DATABASE', 'forge'),
      'username' => env('DB_USERNAME', 'forge'),
      'password' => env('DB_PASSWORD', ''),
      'charset' => 'utf8',
      'prefix' => '',
      'schema' => 'public',
      'sslmode' => 'prefer',
    ],

    //根据需求要连几个数据库就重复写下面的配置几遍,注意这里面'database'要跟 .env 里标红的相对应
    'pgsql2' => [       
      'driver' => 'pgsql',
      'host' => env('DB_HOST', '127.0.0.1'),
      'port' => env('DB_PORT', '5432'),
      'database' => env('DB_DATABASE2', 'forge'),
      'username' => env('DB_USERNAME', 'forge'),
      'password' => env('DB_PASSWORD', ''),
      'charset' => 'utf8',
      'prefix' => '',
      'schema' => 'public',
      'sslmode' => 'prefer',
    ],

    'pgsql3' => [       
      'driver' => 'pgsql',
      'host' => env('DB_HOST', '127.0.0.1'),
      'port' => env('DB_PORT', '5432'),
      'database' => env('DB_DATABASE3', 'forge'),
      'username' => env('DB_USERNAME', 'forge'),
      'password' => env('DB_PASSWORD', ''),
      'charset' => 'utf8',
      'prefix' => '',
      'schema' => 'public',
      'sslmode' => 'prefer',
    ],

    第三步、使用方法

      方法1:
        user1=DB::connection(pgsql)>select("SQL");user1=DB::connection(′pgsql′)−>select("SQL语句");user2 = DB::connection('pgsql2')->update("SQL语句");
        $user3 = DB::connection('pgsql3')->select("SQL语句");

        DB::connection('pgsql3')->delete("delete from changeinfo where id=1");

        DB::connection('pgsql3')->insert("insert into changeinfo(name,idcard,iccid) values ('maxin,maxin′,′cardid','$iccid')");

        DB::connection('pgsql')->update("update radcheck SET value='datawhereusername=data′whereusername=′phone'");

        DB::connection('pgsql3')->select("select * from changeinfo where iccid='$iccid'");

      方法2:  
        protected connection=pgsql;//使    protectedconnection=′pgsql′;//指明你要使用的连接    protectedconnection = 'pgsql2'; //指明你要使用的连接
        protected $connection = 'pgsql3'; //指明你要使用的连接

    第四步、多个数据库操作事务处理

    use socket; 

    DB::connection('pgsql1')->beginTransaction();  //开启
    DB::connection('pgsql')->beginTransaction();

    rs1=DB::connection(pgsql1)>update("updateradcheckSETvalue=rs1=DB::connection(′pgsql1′)−>update("updateradcheckSETvalue=′data' where username='phone");phone′");rs2 = DB::connection('pgsql')->update("update radcheck SET value='datawhereusername=data′whereusername=′phone'");


    if(rs1&&rs1&&rs2)
    {
      DB::connection('pgsql')->commit(); //提交
      DB::connection('pgsql1')->commit();
      return true;
    }
    else
    {
      DB::connection('pgsql')->rollback(); //回滚
      DB::connection('pgsql1')->rollback();
      return false;
    }

    原文地址:https://www.cnblogs.com/54sen/articles/6929500.html

  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/yiweiyihang/p/8331324.html
Copyright © 2011-2022 走看看