Yêu cầu thg 3 19, 2020 3:07 SA 635 0 4
  • 635 0 4
0

Database connection successful but Unknown database in migrate

Chia sẻ
  • 635 0 4

Em test kết nối database connection successful . Nhưng khi chạy migrate nó lại không hiểu tên của database đấy . Cổng 3306 bị trùng nên đổi sang 3360 , em test php thuần thì kết nối được đến db thành công nhưng khi chạy migrate ra lỗi Unknown database .
Đây là file .env của em .

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3360
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=1
'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', '3360'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],
Avatar Son Dao Thai @dao.thai.son
thg 3 19, 2020 3:08 SA

Bạn bổ sung thêm file .env nữa đi

4 CÂU TRẢ LỜI


Đã trả lời thg 3 19, 2020 3:22 SA
Đã được chấp nhận
+2

Bạn thử chạy mysql và show databases xem có db nào tên laravel chưa?

mysql -uroot -p
>> show databases;

Nếu chưa có bạn tạo một db mới tên laravel nhé

CREATE DATABASE db_name;
Chia sẻ
thg 3 19, 2020 7:42 SA

Cảm ơn bạn nhé mình đã làm được rồi . Bạn có thể giải thích cho thêm về mysql -uroot -p được không

Avatar Hải Hà @HaiHaChan
thg 3 19, 2020 8:30 SA

@trunk

mysql -u <user> -p

Đây chỉ đơn giản là command để login mysql bằng terminal thôi mà. Trong đó

  • -u là option cho user, thường thì dùng quyền của root cho đơn giản
  • option -p là có sử dụng password

Bạn xem thêm ở đây nhé: http://g2pc1.bu.edu/~qzpeng/manual/MySQL Commands.htm

thg 3 19, 2020 8:33 SA

@HaiHaChan Vậy nó có liên quan gì đến mysql trên phpmyadmin k vậy ạ . Tại nãy mình tạo database xong k thấy ở phpmyadmin . Trước giờ mình cứ test trên phpmyadmin nên mới nó mới báo lỗi

Avatar Hải Hà @HaiHaChan
thg 3 19, 2020 9:16 SA

@trunk phpmyadmin hỗ trợ giao diện thay vì dùng terminal thôi mà bạn

thg 3 19, 2020 9:20 SA

@HaiHaChan Hóa ra là mình test thì test ở webserver apache của xampp . Hóa ra migrate nó chạy ở bên mysql của local.@HaiHaChan

Đã trả lời thg 3 19, 2020 3:11 SA
+1

Có thể bạn đang gặp các trường hợp:

  1. Bạn chưa tạo database đấy. bạn thử tạo lại database xem sao.

  2. Bạn sửa tên db trong .env nhưng chưa clear cache -> bạn thử chạy

php artisan config:clear
Chia sẻ
thg 3 19, 2020 3:15 SA

Em tạo db đấy rồi , test kết nối thành công rồi ạ . Nhưng k chạy được migrate

Avatar Phạm Tuấn Anh @phamtuananh760
thg 3 19, 2020 3:47 SA

@trunk Bạn thử restart server xem. có thể bạn set tên db trong khi server đang chạy

Đã trả lời thg 3 19, 2020 6:19 SA
+1

đổi DB_HOST trong .env sang mysql đi bạn ơi

DB_HOST=mysql

Chia sẻ
thg 3 19, 2020 6:20 SA

Cũng hổng được luôn à

thg 3 19, 2020 6:25 SA

Cổng 3306 bị trùng ra sao? bình thường bạn có thể để nguyên port 3306 và tạo nhiều DB mà tại sao lại phải đổi? thử dùng cái này xem sao

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3360'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],
thg 3 19, 2020 6:38 SA

Mình cài xampp trên ubuntu nó bị trùng cổng 3306 k chạy nên mình đổi sang 3360 . Project khác thì k chạy migrate vẫn dùng đc . Sang đến laravel này thì không chạy được . Dùng cả

    try {
        DB::connection()->getPdo();
        if(DB::connection()->getDatabaseName()){
            echo "Yes! Successfully connected to the DB: " . DB::connection()->getDatabaseName();
            die;
        }else{
            die("Could not find the database. Please check your configuration.");
        }
    } catch (\Exception $e) {
        die($e->GetMessage());
    }
});

Vẫn kết nối thành công nhưng lại k migrate đc

thg 3 19, 2020 6:59 SA

Chờ chút mình cài xampp tét xem sao. Mình cũng dùng Ubuntu. Bạn dùng Ubuntu sao ko chuyển dùng Docker cho tiện.

thg 3 19, 2020 7:01 SA

Docker cũng lỗi cổng chắc giờ cài lại ubuntu cho nhanh 😦(

thg 3 19, 2020 7:51 SA

mình vừa cài xampp trên ubuntu thử, một phát ăn luôn mà ko hiểu sao bạn ko dc nhỉ.
Khi bạn mở laravel site trên trình duyệt thì nó báo lỗi gì ko?
Lúc nẫy mình có chỉ bạn đổi DB_HOST=mysql, cái này ko đúng, dùng cho docker nhé.
Bạn đổi lại DB_HOST=localhost giúp mình.
Thử tắt mysql trên local xem sao:
sudo service mysql stop
sau đó đổi lại xampp config mysql port về 3306 với laravel app mysql về 3306 xem sao
Mà khuyên thật bạn chuyển dùng Docker cho đỡ dính conflict. xampp dù gì nó cũng chạy thẳng trên local nên kiểu gì cũng ko phải đầu lại phải tai với các service khác cài trên local.
show cho cái ảnh cho trực quan.
Screenshot from 2020-03-19 16-57-07.png

thg 3 19, 2020 8:27 SA

@Aki mình tìm ra rồi phải tạo database ở mysql -uroot -p . Mỗi tội mysql -uroot -p nó lại k liên quan đến mysql server của mình nên giờ mở db ra kiểu gì . Mà cái docker mình cũng lỗi nhưng chắc để hôm khác lên hỏi sau

thg 3 19, 2020 8:51 SA

đây có nghĩa là bạn đang chạy webserver apache của xampp nhưng lại dùng mysql của local (kiểu râu ông nọ cắm cằm bà kia ấy).
Nếu muốn xem DB thì tải MySQL Workbench về cài zô.
sau đó tạo connect tới port 3360 là xem dc
Screenshot from 2020-03-19 17-45-16.png

thg 5 11, 2020 6:38 SA

@Aki mình sang cài docker cũng bị lỗi tương tự là k biết migrate nó chạy vào đâu , lần này k cài mysql command từ đầu nữa mà vẫn bị .

thg 5 18, 2020 6:09 SA

bạn có dùng docker compose ko? vì port 3306 mặc định của local mysql nên nếu ko đổi sang port khác thì nó sẽ ko chạy dc đâu. Docker compose file kiểu như vầy

version: '3'
services:
  ubuntusv:
    container_name: ubuntusv
    build: ./server
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./www:/var/www"
    tty: true
    links:
      - mysql
  mysql:
    container_name: mysql-ubuntu
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --init-connect="SET NAMES utf8" --innodb_file_per_table=1 --innodb_file_format=BARRACUDA
    environment:
      MYSQL_ROOT_PASSWORD: password bạn muốn đặt
    ports:
      - "port bạn muốn đặt:3306"

Cái port trước dấu hai chấm của mysql bạn muốn đổi thành gì cũng dc, miễn là ko phải 3306. Thông thường để dễ nhớ thường đặt kiểu 13306 chả hạn. Ở Laravel .env thì config cái đoạn Database như sau:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=tên database của bạn
DB_USERNAME=tên đăng nhập mysql (nếu ko có thiết lập gì thì thường là root)
DB_PASSWORD=pasword đăng nhập mysql. Thuông thường nếu bạn dùng docker compose để cài đặt develop enviroment thì cái pass này chính là pass ở chỗ MYSQL_ROOT_PASWORD trong docker compose file

Và nhớ là làm như mình hướng dẫn ở phía trên, dùng MySQL workbench để tạo 1 MySQL connection với port mà bạn đã thiết lập ở Docker compose file.
Sau đó tạo 1 database với tên là tên bạn đã thiết lập ở .env file.

Hoặc bạn có thể post file Docker, file .env của laravel lên đây để mình check giúp bạn

Đã trả lời thg 3 19, 2020 3:16 SA
0

Mình nghĩ có thể có do config trong .env, bạn thử show lên đây được không (dùng markdown nhé)

```ten-ngon-ngu

<code>

```

Hoặc bạn thử lên phpmyadmin tạo 1 db với tên như bạn đã config rồi chạy migrate xem, do local của bạn chưa có db đấy nên ko chạy đc migrate

Chia sẻ
Avatar ronghv @ronghv
thg 12 17, 2023 7:56 SA

Nhở hỗ trợ lỗi này khi chạy file: Warning: mysqli_connect(): (HY000/1049): Unknown database 'db_qllct' in C:\xampp\htdocs\QLLCT\connect\connectdb.php on line 3 Kết nối không thành côngUnknown database 'db_qllct'

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí