Câu trả lời. các bảng của tôi là MyISAM, không phải Innodb. Các bảng MyISAM không hỗ trợ các giao dịch và thật không may, Laravel không cảnh báo bạn về điều này khi bạn cố gắng tạo một giao dịch. Vì thế. ghi lại câu trả lời ở đây vì lợi ích của hậu thế. Đoán tôi sẽ phải thiết lập một cơ sở dữ liệu sqlite riêng phản ánh lược đồ của tôi. tẩy trắng. đó là một lược đồ khá lớn Show
Đăng nhập để tham gia vào chủ đề này Cụm vấn đề kỹ thuật được trả lời lần đầu vào ngày 6 tháng 10 năm 2022 Mức độ phổ biến 7/10 Mức độ hữu ích 5/10 khôi phục giao dịch db laravel không hoạt độngMức độ phổ biến 6/10 Tính hữu ích 5/10 Ngôn ngữ php Bóng tối 968 câu trả lời Chất lượng trung bình 8/10 khôi phục giao dịch db laravel không hoạt độngMức độ phổ biến 6/10 Tính hữu ích 5/10 Ngôn ngữ php Bóng tối 968 câu trả lời Chất lượng trung bình 8/10 Các vấn đề về độ chính xác và tính nhất quán của dữ liệu có thể dẫn đến mọi thứ, từ những bất tiện nhỏ đến những mối quan tâm lớn của công ty. Điều quan trọng là xây dựng mã lưu trữ, thay đổi và xóa dữ liệu trong cơ sở dữ liệu của bạn một cách an toàn Nhập giao dịch cơ sở dữ liệu Laravel Giao dịch cơ sở dữ liệu là một cách tiếp cận hiệu quả để đảm bảo tính toàn vẹn của dữ liệu. Laravel đơn giản hóa các giao dịch này trên nhiều loại cơ sở dữ liệu Nhưng chính xác thì chúng là gì? Laravel đơn giản hóa các giao dịch cơ sở dữ liệu 🚀 Tìm hiểu thêm trong hướng dẫn này ⬇️Nhấp để TweetĐến cuối hướng dẫn mở rộng này, bạn sẽ học được tất cả về giao dịch cơ sở dữ liệu trong Laravel và cách sử dụng chúng hiệu quả trong dự án của bạn Giao dịch cơ sở dữ liệu Laravel là gì?Trước khi chúng ta chuyển sang khía cạnh kỹ thuật của mọi thứ, trước tiên hãy hiểu các giao dịch cơ sở dữ liệu Laravel là gì và bạn có thể hưởng lợi từ chúng như thế nào Xem kế hoạch Giao dịch cơ sở dữ liệu là một tập hợp các thao tác mà bạn có thể thực hiện một cách an toàn trong cấu trúc cơ sở dữ liệu của ứng dụng, chẳng hạn như truy vấn SQL để sửa đổi dữ liệu (e. g. cập nhật, xóa và chèn) Tại bất kỳ thời điểm nào, bạn có thể quyết định khôi phục tất cả các truy vấn của giao dịch. Ngoài ra, bất kỳ truy vấn nào bạn thực hiện sẽ được cơ sở dữ liệu coi là một hành động đơn lẻ Hãy xem xét một ví dụ về điều này Giả sử chúng tôi có một ứng dụng cho phép người dùng tạo tài khoản. Đương nhiên, có thể có một hoặc nhiều người dùng được liên kết với mỗi tài khoản. Nếu ứng dụng này đồng thời tạo tài khoản và người dùng đầu tiên, thì bạn sẽ phải giải quyết vấn đề xảy ra nếu tài khoản được tạo đúng cách, nhưng người dùng thì không Hãy xem mã mẫu này
Có hai kịch bản ở đây có thể gây ra các vấn đề khó chịu
Hãy xem xét tình huống sau Có tài khoản mà không có người dùng dẫn đến dữ liệu trong cơ sở dữ liệu không thống nhất. Để giải quyết vấn đề này, bạn có thể thực hiện nhiệm vụ khó khăn là viết mã xung quanh nó hoặc lưu rất nhiều mã hoặc đơn giản là gói nó trong một giao dịch để hoàn thành công việc nhanh chóng Mặc dù các giao dịch cơ sở dữ liệu có mặt trong hầu hết các cơ sở dữ liệu SQL, nhưng chúng khác nhau chủ yếu ở cách thực hiện và hiệu quả của chúng. Các hệ thống phổ biến như MySQL, SQLite, PostgreSQL và Oracle hỗ trợ các giao dịch, vì vậy bạn sẽ không gặp khó khăn khi triển khai cơ sở dữ liệu SQL ưa thích của mình di cưMigration là một chức năng quan trọng trong Laravel cho phép bạn xây dựng một bảng trong cơ sở dữ liệu của mình, thực hiện các sửa đổi và chia sẻ lược đồ cơ sở dữ liệu của ứng dụng. Bạn có thể sử dụng di chuyển Laravel để chỉnh sửa bảng bằng cách thêm cột mới hoặc xóa cột hiện có Giả sử bạn đang thảo luận ý tưởng với một nhóm và cần điều chỉnh bảng. Tệp SQL phải được chia sẻ và nhập bởi một người nào đó trong nhóm. Có thể do quên import file SQL gây ra sự cố trong quá trình vận hành ứng dụng Đây là nơi Laravel migration đến giải cứu. Bạn có thể thêm một cột mới vào cơ sở dữ liệu của mình hoặc xóa các mục nhập mà không ảnh hưởng đến những mục đã có máy gieo hạtSeeding là một công cụ do Laravel cung cấp cho các nhà phát triển để hỗ trợ kiểm tra các loại dữ liệu khác nhau, sửa lỗi và điều chỉnh hiệu suất. Bạn có thể tự động thêm nhiều hàng dữ liệu giả vào bảng cơ sở dữ liệu của mình thông qua trình tạo cơ sở dữ liệu trong một lệnh duy nhất Do đó, bạn có thể bắt đầu lại với một cơ sở dữ liệu mới và các giá trị mẫu thay vì phải nhập chúng theo cách thủ công mỗi khi cơ sở dữ liệu được khôi phục Tùy chọn cho giao dịch cơ sở dữ liệu LaravelLaravel cung cấp các công cụ khác nhau để quản lý dữ liệu của bạn như Adminer. Đối với các giao dịch cơ sở dữ liệu, có ba phương pháp ở cuối cơ sở dữ liệu để bắt đầu giao dịch theo cách thủ công và có toàn quyền kiểm soát việc quản lý giao dịch Nhiều người dùng thấy các tùy chọn này linh hoạt hơn để xác định chính xác thời điểm giao dịch nên được thực hiện hoặc khôi phục
Luôn nhớ kết thúc mọi giao dịch đang mở bằng hành động cam kết hoặc quay lui, đặc biệt là các vòng lặp. Nếu không, phương pháp thủ công này sẽ không đồng bộ và bản ghi của bạn sẽ không được cập nhật Cách làm việc với cơ sở dữ liệu Laravel của bạnMigration và seeder, như đã đề cập trước đây, là các giải pháp phức tạp được thiết kế cho các nhà phát triển Laravel để nhanh chóng triển khai, xóa và khôi phục cơ sở dữ liệu của ứng dụng bằng cách giảm sự chênh lệch. Nó rất hữu ích, đặc biệt là khi có nhiều nhà phát triển đang làm việc trên cùng một ứng dụng Phần này sẽ chỉ cho bạn cách sử dụng migrations và seeder dễ dàng với cơ sở dữ liệu Laravel của bạn bằng các lệnh thủ công điều kiện tiên quyếtĐây là những gì bạn cần để bắt đầu
Công cụ DevKinsta của chúng tôi được cung cấp bởi Docker và được sử dụng bởi 34,700++ nhà phát triển và nhà thiết kế để dễ dàng tạo và phát triển một hoặc nhiều trang web WordPress. Có các công cụ phát triển web khác mà bạn có thể sử dụng tùy thuộc vào kỹ năng và nhu cầu mã hóa của mình Di chuyển LaravelCó hai phương thức trong một lớp di chuyển. lên và xuống. Phương thức up được sử dụng để tạo bảng, chỉ mục hoặc cột mới trong cơ sở dữ liệu của bạn. Phương pháp xuống sẽ hoàn tác các hiệu ứng của phương pháp lên Bạn có thể sử dụng trình tạo lược đồ Laravel để xây dựng và chỉnh sửa các bảng một cách tự do trong mỗi phương thức này. Chẳng hạn, sự di chuyển này tạo ra một bảng chuyến bay
Hãy nhớ rằng các lệnh 7 cần làm rõ tên của bảng. Vì vậy hãy đảm bảo rằng 8 phù hợp với những gì bạn muốnBạn có thể sử dụng các tùy chọn 9 và 0 để chỉ định tên của bảng và liệu quá trình di chuyển có tạo bảng mới hay không như minh họa bên dưới
Thư mục cơ sở dữ liệu/di chuyển của bạn bây giờ sẽ bao gồm di chuyển mới. Mỗi tên tệp di chuyển bao gồm một dấu thời gian mà Laravel sử dụng để xác định thứ tự di chuyển Bạn cũng có tùy chọn để xác định một 1, liên quan đến thư mục gốc của bản cài đặt của bạn. Sử dụng lệnh sau
Di chuyển đang chạyCó một số lệnh hữu ích mà bạn có thể tận dụng khi chạy di chuyển. Chúng ta hãy đi qua một vài trong số họ
Đôi khi bạn có thể gặp lỗi “Không tìm thấy lớp” khi thực hiện di chuyển. Nếu bạn làm như vậy, hãy chạy lệnh 6Một số di chuyển có thể nguy hiểm và có thể dẫn đến mất dữ liệu của bạn. Do đó, Laravel sẽ nhắc bạn xác nhận việc thực thi các lệnh để bảo vệ dữ liệu của bạn Nếu bạn không muốn được nhắc, hãy sử dụng 7 để buộc các lệnh như sau
Quay lại di chuyểnSử dụng lệnh rollback khi bạn cần đảo ngược đợt di chuyển cuối cùng như sau Triển khai ứng dụng của bạn lên Kinsta - Bắt đầu với Khoản tín dụng $20 ngay bây giờChạy nút của bạn. js, Python, Go, PHP, Ruby, Java và Scala, (hoặc hầu hết mọi ứng dụng khác nếu bạn sử dụng Dockerfiles tùy chỉnh của riêng mình), trong ba bước đơn giản Triển khai ngay bây giờ và nhận $20 giảm giá
Dưới đây là một số lệnh khôi phục khác mà bạn có thể sử dụng
Laravel SeedingSeeder là một lớp tạo và đặt các mẫu dữ liệu (hạt giống) vào cơ sở dữ liệu. Laravel cung cấp một kỹ thuật đơn giản để tạo dữ liệu thử nghiệm cho cơ sở dữ liệu của bạn bằng cách sử dụng các lớp hạt giống trong thư mục cơ sở dữ liệu/hạt giống Bạn có thể tự do chọn tên cho các lớp hạt giống của mình. Nhưng chúng tôi khuyên bạn nên tuân theo mẫu đặt tên rõ ràng mà bạn chọn, chẳng hạn như UsersTableSeeder. Sau đó, một lớp học 5 được tạo cho bạn theo mặc địnhĐây là một ví dụ về seed class cơ sở dữ liệu trong Laravel
Tạo một SeederTạo máy gieo hạt dễ như ăn bánh. Bạn có thể nhắm mắt làm điều đó (nhưng làm ơn đừng) Thực hiện lệnh thủ công 6 để tạo máy gieo hạt. Bây giờ, thư mục cơ sở dữ liệu/hạt giống sẽ bao gồm tất cả các bộ gieo hạt do khung tạo ra
Phương thức mặc định của lớp seeder được chạy. Quá trình diễn ra khi bạn áp dụng lệnh thủ công 7. Bạn có thể đưa dữ liệu vào cơ sở dữ liệu của mình theo bất kỳ cách nào bạn muốn bằng cách sử dụng hàm run. Hơn nữa, bạn hoàn toàn có thể sử dụng các nhà máy mô hình Eloquent hoặc Trình tạo truy vấn để chèn dữ liệu theo cách thủ côngBất kể, bạn nên nhớ rằng trong quá trình tạo cơ sở dữ liệu, tính năng bảo vệ gán hàng loạt sẽ tự động bị tắt Ở đây, chúng ta sẽ sửa đổi lớp cơ bản 5 và thêm câu lệnh chèn cơ sở dữ liệu vào phương thức run
Nếu bạn muốn gõ gợi ý bất kỳ phụ thuộc nào trong mã của phương thức chạy, bộ chứa dịch vụ của Laravel sẽ tự động giải quyết chúng Hơn nữa, bạn có thể sử dụng hàm 9 để thực thi các lớp khởi tạo khác nhau từ lớp này, cho phép bạn tùy chỉnh thứ tự khởi tạo. Bạn có thể chia việc tạo cơ sở dữ liệu của mình thành các tệp khác nhau, đảm bảo rằng không có lớp trình tạo đơn lẻ nào mở rộng quá mứcNhập tên của lớp seeder mà bạn muốn sử dụng như hình bên dưới 0Máy gieo hạt chạySau khi tạo seeder của bạn, bạn có thể cần sử dụng lệnh 0 để tạo lại trình tải tự động của ComposerĐấu tranh với thời gian chết và các vấn đề về WordPress? . Kiểm tra các tính năng của chúng tôi 1Tiếp theo, bạn cần thực thi lệnh thủ công 7 để khởi tạo cơ sở dữ liệu của mình 2Lệnh này thực thi lớp 5 bằng proxy, có thể được sử dụng để chạy các lớp gốc khác. Tuy nhiên, bạn có thể sử dụng tham số 3 để thực thi riêng một lớp seeder cụ thể như sau 3Điều gì sẽ xảy ra nếu bạn muốn tạo lại cơ sở dữ liệu của mình từ đầu, bao gồm xóa tất cả các bảng và chạy lại tất cả các lần di chuyển của bạn? 4Như trường hợp di chuyển, một số quy trình tạo giống có thể dẫn đến mất dữ liệu hoặc thay đổi không mong muốn. Vì lý do này, bạn sẽ được nhắc phê duyệt trước khi trình tạo tệp được thực thi để bảo vệ bạn khỏi việc thực thi các lệnh tạo tệp trên cơ sở dữ liệu chính của bạn Nếu bạn đủ tự tin và không muốn bị gián đoạn bởi bước bảo mật đó, hãy sử dụng cờ 5 bên dưới 55 cách khác để sử dụng truy vấn cơ sở dữ liệu thô trong LaravelMặc dù Laravel cung cấp các công cụ tiện dụng như Eloquent và Query Builder, nhưng bạn vẫn có thể thực hiện các truy vấn thô bằng SQL. Chúng tôi đã làm tròn năm cách khác nhau để làm như vậy Nhưng trước khi bắt đầu, bạn nên biết rằng các truy vấn thô không được bảo mật tự động, khiến chúng trở thành một cách tiếp cận rủi ro. Do đó, nếu bạn đang cung cấp bất kỳ tham số nào cho truy vấn, hãy đảm bảo rằng chúng ở đúng định dạng và có giá trị phù hợp, chẳng hạn như một số chứ không phải văn bản Tính toán Trung bình/Tổng/ĐếmBạn có thể sử dụng truy vấn thô nếu muốn tạo 6, sau đó sử dụng các hàm tổng hợp của MySQL như 7, 8, 9, 0 hoặc 1 như minh họa trong ví dụ sau 6Thậm chí có thể thực hiện cả 2 và 3 trong cùng một truy vấn SQL 7lọc nămTrong trường hợp bạn cần thực hiện các phép tính SQL trong phạm vi 4 hoặc 5, bạn có thể sử dụng truy vấn 6 và 7. Sau khi nhóm, bạn cũng có thể sử dụng câu lệnh 8 bằng cách sử dụng truy vấn SQL 9 với 0Chẳng hạn, lệnh dưới đây cho biết cách nhóm trường ngày/giờ theo năm 8Tính toán một trường đơn (Truy vấn phụ)Giả sử bạn muốn tính toán một cột từ một cột khác và trả về kết quả trong một truy vấn SQL. Làm thế nào bạn có thể hoàn thành nó? Hãy cùng xem 9Đây là một ví dụ khác về câu lệnh SQL 1 0Chuyển đổi SQL cũ hơnTình huống phổ biến là có một câu lệnh SQL yêu cầu chuyển đổi sang Eloquent hoặc Query Builder, đặc biệt là từ một dự án cũ mà bạn đã làm việc trên đó Chà, bạn không thực sự cần phải làm điều đó. Thay vào đó, bạn chỉ cần sử dụng câu lệnh 2 như được hiển thị 1Thực hiện truy vấn không có kết quả 3 có thể chạy truy vấn SQL, không nhận được kết quả như 4 hoặc 5 mà không có biếnĐiều này thường được sử dụng trong di chuyển cơ sở dữ liệu khi cấu trúc bảng thay đổi và dữ liệu cũ phải được thay đổi bằng dữ liệu mới 2Ngoài ra, 6 có thể chạy bất kỳ truy vấn SQL nào với lược đồ không giới hạn giá trị hoặc cột. Đây là một ví dụ 3 Tìm hiểu cách sử dụng hiệu quả các giao dịch Laravel trong dự án tiếp theo của bạn với hướng dẫn này ✅Nhấp để TweetTóm lượcĐến bây giờ, bạn đã hiểu sâu về các giao dịch cơ sở dữ liệu trong Laravel và cách triển khai chúng. Chúng không chỉ hỗ trợ tính toàn vẹn của dữ liệu mà còn giúp tối ưu hóa hiệu suất của Laravel và giúp quá trình phát triển của bạn dễ dàng hơn Nhận tất cả các ứng dụng, cơ sở dữ liệu và trang web WordPress của bạn trực tuyến và dưới một mái nhà. Nền tảng đám mây hiệu suất cao, đầy đủ tính năng của chúng tôi bao gồm
Hãy tự kiểm tra với $20 trong tháng đầu tiên của Lưu trữ ứng dụng hoặc Lưu trữ cơ sở dữ liệu. Khám phá kế hoạch của chúng tôi hoặc nói chuyện với bộ phận bán hàng để tìm thấy sự phù hợp nhất của bạn Điều gì xảy ra nếu khôi phục giao dịch không thành công?Nếu khôi phục không thành công thì bạn sẽ gặp sự cố nghiêm trọng. Không thể đảm bảo độ tin cậy của cơ sở dữ liệu . Nói cách khác; .
Tại sao rollback không hoạt động trong SQL?Sau khi SQL Server thực hiện một giao dịch, bạn không thể chạy câu lệnh ROLLBACK . Mỗi câu lệnh rollback phải có liên kết với câu lệnh BEGIN Transaction.
Khi rollback của một giao dịch có thể xảy ra?Không thể khôi phục giao dịch sau khi câu lệnh CAM KẾT GIAO DỊCH được thực thi, ngoại trừ khi GIAO DỊCH CAM KẾT được liên kết với giao dịch lồng nhau có trong giao dịch đang được khôi phục.
Việc khôi phục giao dịch có cần thiết không?ADO được viết đúng nhất. NET sẽ khôi phục các giao dịch không được cam kết rõ ràng. Vì vậy không thực sự cần thiết . Lợi ích chính mà tôi thấy của Rollback() rõ ràng gọi đó là khả năng đặt điểm dừng ở đó và sau đó kiểm tra kết nối hoặc cơ sở dữ liệu để xem điều gì đang xảy ra. |