Bảng cơ sở hoặc chế độ xem đã tồn tại Laravel 8

docker-compose exec phpfpm /var/www/laravel/artisan di chuyển Illuminate\Database\QueryException. SQLSTATE[42S01]. Bảng cơ sở hoặc dạng xem đã tồn tại. 1050 Bảng 'bài viết' đã tồn tại (SQL. tạo bảng `posts` (`id` int unsigned not null khóa chính auto_increment, `title` varchar(255) not null, `created_at` timestamp null) bộ ký tự mặc định utf8mb4 đối chiếu 'utf8mb4_unicode_ci')

Lỗi bảng cơ sở hoặc chế độ xem đã tồn tại khi Di chuyển Laravel là một trong những điều đau đầu nhất đối với người mới khi họ bắt đầu sử dụng di chuyển. Bảng cơ sở hoặc dạng xem là một loại bảng trong mysql. Có hai mục trong cơ sở dữ liệu có tên là bảng hoặc dạng xem. Nếu chúng đã tồn tại và bạn đã di chuyển, vấn đề sẽ phát sinh

Nâng cấp Laravel 7

Các tính năng của Laravel 7 yêu cầu PHP 7. 2. 5

Vấn đề di cư để sinh sản

$ php nghệ nhân làm. di chuyển tạo_customers_table

Sẽ có một số tệp di chuyển có tên 2014_10_12_000000_create_customers_table trong thư mục cơ sở dữ liệu/di chuyển

Ok rồi, chúng ta tạo migration như sau trong public function up()

Lược đồ. tạo ('khách hàng', chức năng (Bản thiết kế $table) {

$table->id();

$table->string('tên');

$table->string('email')->unique();

$table->string('mật khẩu');

$table->dấu thời gian();

});

Tuy nhiên, Bạn không xác định bất cứ điều gì trong hàm công khai down(). VẤN ĐỀ PHÁT SINH

Sau đó, bạn làm mới di chuyển bằng cách sử dụng

Di chuyển thủ công $php. Làm tươi

(hoặc)

Di chuyển thủ công $php. làm mới --seed

Bây giờ, bạn sẽ thấy lỗi sau trong lần làm mới thứ hai, nếu bạn không chạy bảng di chuyển

SQLSTATE[42S01]. Bảng cơ sở hoặc dạng xem đã tồn tại trong bảng khách hàng

Nguyên nhân của bảng cơ sở hoặc chế độ xem đã tồn tại

Nguyên nhân chính khi lần di chuyển đầu tiên hàm up() được gọi và quá trình di chuyển của bạn hoạt động tốt với bảng khách hàng. Tuy nhiên, khi gọi làm mới di chuyển, hàm down() được gọi trong tệp di chuyển của khách hàng nhưng không có hướng dẫn xóa. Vì vậy, bảng cơ sở hoặc dạng xem đã tồn tại và nó vẫn chưa bị xóa.  

Vì vậy, khi bạn di chuyển trở lại hoặc làm mới quá trình di chuyển, bảng cơ sở cũ hoặc dạng xem đã tồn tại và bạn sẽ thấy lỗi trên với SQLSTATE

Trong khi di chuyển hoặc khôi phục cơ sở dữ liệu trong Laravel, bạn có thể gặp lỗi như SQLSTATE[42S01]. Bảng cơ sở hoặc dạng xem đã tồn tại. Trong bài viết này, chúng ta sẽ xem cách giải quyết lỗi này một cách chính xác. Vì vậy, chúng ta hãy nhảy vào nó

Tại sao lỗi này xảy ra?

Giả sử bạn đã chạy lệnh

php artisan migrate:rollback
2 nhưng do mã của bạn bị lỗi. Nó sẽ không được hoàn thành thành công nhưng một số bảng đã được tạo vào cơ sở dữ liệu

Sau khi sửa lỗi, bạn chạy lại lệnh

php artisan migrate:rollback
2 và bạn sẽ gặp lỗi “SQLSTATE[42S01]. Bảng cơ sở hoặc dạng xem đã tồn tại“

Các giải pháp

Có thể có rất nhiều giải pháp cho lỗi này và nó phụ thuộc vào người dùng để làm theo nhu cầu của họ. Hãy xem một số trong số họ

01 Di chuyển lệnh mới trong Laravel

Nếu bạn không lo lắng về dữ liệu đã chèn vào cơ sở dữ liệu của mình thì bạn có thể chạy lệnh sau

php artisan migrate:fresh

Lệnh này sẽ loại bỏ tất cả các bảng khỏi cơ sở dữ liệu và nó sẽ tạo lại tất cả các bảng

02 Di chuyển lệnh Rollback trong Laravel

Nếu bạn đã tạo đúng cách di chuyển của mình thì lệnh này sẽ hoạt động như mong đợi. Bạn nên thêm đúng mã vào phương thức

php artisan migrate:rollback
4 và
php artisan migrate:rollback
5 trong tệp di chuyển của mình

Phương thức

php artisan migrate:rollback
6 sẽ thực thi khi bạn chạy lệnh
php artisan migrate:rollback
2 và phương thức
php artisan migrate:rollback
0 sẽ thực thi khi bạn chạy lệnh
php artisan migrate:rollback
1. Vì vậy, hãy chạy lệnh sau và xem điều gì sẽ xảy ra

php artisan migrate:rollback

Lệnh này sẽ khôi phục đợt di chuyển cuối cùng. Sau đó, sau khi sửa lỗi trong mã của bạn, bạn có thể chạy lại lệnh

php artisan migrate:rollback
2 và bạn đã sẵn sàng để bắt đầu

03 Xóa bảng theo cách thủ công

Bạn có thể thả tất cả các bảng trong cơ sở dữ liệu của mình theo cách thủ công. Sau đó, sửa lỗi trong mã của bạn nếu bạn có bất kỳ lỗi nào rồi chạy lại lệnh

php artisan migrate:rollback
2 và bạn đã sẵn sàng để bắt đầu

04 Sử dụng Phương thức hasTable và hasColumn

Đôi khi, thật khôn ngoan khi sử dụng các phương pháp để tránh sai sót. Chúng tôi sẽ chỉ cho bạn cách sử dụng các phương pháp này để bạn có thể dễ dàng tránh các lỗi trong khi di chuyển hoặc khôi phục cơ sở dữ liệu

Laravel cung cấp hàm

php artisan migrate:rollback
4 để kiểm tra cột có tồn tại trong một bảng nhất định hay không

Tương tự, phương pháp

php artisan migrate:rollback
5 được sử dụng để kiểm tra xem một bảng đã cho có tồn tại hay không. Hãy xem nó bằng ví dụ

4. 1 Kiểm tra bảng có tồn tại hay không trong Laravel Migration

Hãy tạo một bảng

php artisan migrate:rollback
6 chỉ khi bảng
php artisan migrate:rollback
6 không tồn tại trong cơ sở dữ liệu

________số 8

4. 2 Kiểm tra cột Tồn tại hay Không trong Laravel Migration

Giả sử sau khi di chuyển cơ sở dữ liệu, chúng tôi muốn xóa 2 cột

php artisan migrate:rollback
8 và
php artisan migrate:rollback
9

php artisan migrate:rollback
1

Trong ví dụ trên, chúng tôi đang kiểm tra xem nếu một cột nào đó tồn tại thì thả cột khác thì không làm gì cả

Ngoài ra, hãy đọc hướng dẫn của chúng tôi

  1. Cách chọn dữ liệu giữa hai ngày trong MySQL
  2. Lỗi sau khi cấu hình thủ công php. bộ đệm trong Laravel
  3. Khóa được chỉ định là lỗi quá dài trong Laravel
  4. Yêu cầu bài đăng AJAX PHP với ví dụ
  5. Cách sử dụng Laravel Soft Delete
  6. Làm thế nào để thêm phân trang Laravel Next Prev
  7. Laravel Xóa cột khỏi bảng khi di chuyển
  8. Sự khác biệt giữa Factory và Seeder trong Laravel
  9. ấu trùng. Tăng Số Lượng Nếu Sản Phẩm Đã Có Trong Giỏ Hàng
  10. Cách Tính Tuổi Từ Ngày Sinh
  11. Cách kiểm tra phiên bản Laravel PHP
  12. Cách xử lý các công việc thất bại trong Laravel
  13. Cách xóa dữ liệu WooC Commerce sau khi gỡ cài đặt
  14. Cách lấy bản ghi mới nhất trong Laravel
  15. Cách phá vỡ các vòng lặp lồng nhau trong PHP hoặc Laravel
  16. Cách truyền tham số URL của Laravel
  17. Di chuyển cụ thể của Laravel Run

Đó là nó từ cuối của chúng tôi. Chúng tôi hy vọng bài viết này đã giúp bạn giải SQLSTATE[42S01]. Bảng cơ sở hoặc chế độ xem đã tồn tại sự cố trong Laravel

Vui lòng cho chúng tôi biết trong phần nhận xét nếu mọi thứ hoạt động như mong đợi, các vấn đề của bạn hoặc bất kỳ câu hỏi nào. Nếu bạn nghĩ rằng bài viết này đã tiết kiệm thời gian và tiền bạc của bạn, vui lòng bình luận, chia sẻ, thích và đăng ký. Cảm ơn bạn đã đọc bài đăng này 🙂 Hãy mỉm cười. mã hóa hạnh phúc