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 Show 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
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()
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
(hoặc)
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ạiNguyê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:rollback2 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:rollback2 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ápCó 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 LaravelNế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 LaravelNế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:rollback4 và php artisan migrate:rollback5 trong tệp di chuyển của mình Phương thức php artisan migrate:rollback6 sẽ thực thi khi bạn chạy lệnh php artisan migrate:rollback2 và phương thức php artisan migrate:rollback0 sẽ thực thi khi bạn chạy lệnh php artisan migrate:rollback1. 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:rollback2 và bạn đã sẵn sàng để bắt đầu 03 Xóa bảng theo cách thủ côngBạ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:rollback2 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:rollback4 để 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:rollback5 đượ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 MigrationHãy tạo một bảng php artisan migrate:rollback6 chỉ khi bảng php artisan migrate:rollback6 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 MigrationGiả 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:rollback8 và php artisan migrate:rollback9 php artisan migrate:rollback1 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
Đó 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 |