2013-08-26 29 views
5

Tôi gặp một rắc rối khi áp dụng một django di cư về phía nam:stucked trong một di chuyển về phía nam django - TransactionManagement lỗi

Như mọi khi, tôi thực hiện lệnh di cư sau một schemamigration thành công

python manage.py migrate webapp 

Nhật ký console :

Running migrations for webapp: 
- Migrating forwards to 0020_auto__add_example. 
> webapp:0020_auto__add_example 
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK 

Lỗi này không liên quan đến việc di chuyển cụ thể như thể tôi di chuyển ngược lại và thử một lỗi khác hiển thị cùng một thông báo.

Bất kỳ ý tưởng nào?

Chỉnh sửa. Đây là nhật ký truy vấn:

(0.005) SELECT `south_migrationhistory`.`id`, `south_migrationhistory`.`app_name`, `south_migrationhistory`.`migration`, `south_migrationhistory`.`applied` FROM `south_migrationhistory` WHERE `south_migrationhistory`.`applied` IS NOT NULL ORDER BY `south_migrationhistory`.`applied` ASC; args=() 
Running migrations for webapp: 
- Migrating forwards to 0020_auto__add_example. 
> webapp:0020_auto__add_example 
(0.002) CREATE TABLE ROLLBACK_TEST (X INT); args=() 
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK 
+0

Bạn có thể bật ghi nhật ký sql và đính kèm kết quả ở đây không? https://coderwall.com/p/uzhyca – tuxcanfly

+1

@tuxcanfly, tôi đã thêm nó. – Miquel

+1

Cảm ơn tuxcanfly. Ít nhất tôi đã học được cách đăng nhập cơ sở dữ liệu khi thực hiện các truy vấn django. – Miquel

Trả lời

0

Tôi đang viết câu trả lời cho vấn đề tôi có khi có thể hữu ích cho ai đó.

Sau một thời gian gỡ lỗi, tôi thấy rằng vấn đề không liên quan đến django. Đó là một vấn đề với cơ sở dữ liệu và máy ảo lưu trữ nó.

Tôi đã khởi động lại máy cơ sở dữ liệu và việc di chuyển hiện đang hoạt động.

1

Tôi đã có cùng một vấn đề và đối với tôi giải pháp đơn giản là cung cấp quyền thích hợp cho tệp sqlite development.db của tôi cho người dùng đang thực hiện lệnh python manage.py migrate webapp. Tôi đã có tập tin thuộc sở hữu của www-data và do đó không thể làm việc trên tập tin.

3

Tôi gặp vấn đề tương tự và đã đập đầu mình một lúc. Hóa ra người dùng cơ sở dữ liệu (MySQL) của tôi không có đủ đặc quyền. Tôi đã gán: ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE cho người dùng và mọi thứ hoạt động tốt.

13

Tôi vừa gặp sự cố tương tự.

  • MySQL 5.6.13 (trên Amazon RDS)
  • Django == 1.5.4
  • MySQL-python == 1.2.4
  • == Nam 0.8.2

Tôi đã trải qua hầu hết mọi sửa chữa có thể ở đây và thông qua vô số tìm kiếm của Google với số không may mắn.

Tôi đã xem lược đồ cơ sở dữ liệu và bảng mà tôi chưa tạo có tên 'ROLLBACK_TEST' là một phần của lược đồ.

Khi tôi bỏ bảng bí ẩn đó, quá trình di chuyển đã chạy hoàn hảo.

Bảng này chỉ có thể có nguồn gốc qua Django, South hoặc có thể là quy trình nội bộ tại Amazon vì không có gì khác có quyền truy cập.

+0

Tôi đã gặp phải sự cố tương tự. Tôi đã hủy bỏ việc di chuyển và ROLLBACK_TEST là một bảng còn lại trong cơ sở dữ liệu. Bỏ bảng đó nói với những điều ở Nam là ok. – Adriaan

+1

Lưu ý rằng bạn có thể gặp sự cố này nếu người dùng DB của bạn không có đặc quyền giảm – Esteban

0

Khi tôi đến cùng một vấn đề, vấn đề của tôi ít nhiều liên quan đến django. Tôi giải thích.

Tôi đang làm việc với các tab khác nhau trong bảng điều khiển của mình. Một đã được sử dụng với một vỏ django để kiểm tra các mô hình của tôi và trong một tab khác tôi chạy các di chuyển.Tôi đã đến một lỗi toàn vẹn trong tab shell của tôi. Vì vậy, cho đến khi tôi giải quyết được vấn đề (see this thread) hoặc đóng tab, lỗi trong tab di chuyển vẫn tồn tại. Như câu trả lời trước đây đã chỉ ra, đây là một cái gì đó liên quan đến DB-nhưng không phải lỗi của DB.

3

Tôi đã gặp vấn đề tương tự với Django 1.6 và South 1.0 trên phiên bản MySQL. Sau khi bật django.db.backends logger tôi nhận ra cuộc di cư đã bị mắc kẹt trên các câu lệnh SQL sau:

DEBUG (0.003) CREATE TABLE ROLLBACK_TEST (X INT); args=None 

Vì vậy, tôi đã kiểm tra cơ sở dữ liệu và chắc chắn đủ thấy trên bàn ăn ROLLBACK_TEST. Việc xóa nó đã giải quyết được sự cố:

$ manage.py dbshell 
mysql> DROP TABLE ROLLBACK_TEST; 
Các vấn đề liên quan