Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Django + MySQL - Trang web quản trị - Thêm người dùng - Lỗi hoạt động - SAVEPOINT không tồn tại

Lỗi này đã ám ảnh tôi trong một thời gian dài, vì vậy tôi quyết định đào sâu hơn và cố gắng giải quyết nó một lần và mãi mãi.

Nguyên nhân gốc:Sự cố SAVEPOINT là một lỗi chỉ xảy ra trong MySQL-Python trình kết nối.

Khắc phục:Sử dụng các trình điều khiển MySQL khác cho Python (ví dụ:mysqlclient ).

Chi tiết / Kết quả:

  • Đã thử các tệp nhị phân MySQL trong Homebrew, MAMP và XAMPP dành cho Mac.
  • Đã thử các phiên bản MySQL khác nhau, 5.6 (libmysqlclient.18.dylib ) và 5,7 (libmysqlclient.20.dylib ).
  • Đã thử các trình điều khiển MySQL của Python khác nhau.

Không tìm thấy mối quan hệ nào bằng cách thay đổi các phiên bản / nhị phân MySQL. Nhưng tôi đã thu hẹp vấn đề bằng cách thử nghiệm các trình điều khiển MySQL khác nhau thường được sử dụng trong Python:

  1. MySQLdb (được sử dụng rộng rãi nhưng trình kết nối cơ sở dữ liệu cũ, lần cam kết gần đây nhất là 7 năm trước!):

    $ pip install MySQL-python

  2. mysqlclient (phiên bản hiện đại của MySQL-python , nhưng có rất nhiều bản sửa lỗi và cải tiến):

    $ pip install mysqlclient

  3. PyMySQL (trình điều khiển cơ sở dữ liệu Python MySQL thuần túy):

    $ pip install PyMySQL

    Sau đó, thêm vào settings.py (ngay bên dưới import os ):

    try:
        import pymysql
        pymysql.install_as_MySQLdb()
    except:
        pass
    
  4. MySQL-Connector-Python bởi Oracle (trình điều khiển cơ sở dữ liệu Python MySQL thuần túy):

    $ pip install mysql-connector-python-rf

    Sau đó, chỉnh sửa ENGINE của cơ sở dữ liệu cấu hình trong settings.py :

    'ENGINE': 'mysql.connector.django',
    

Sự cố SAVEPOINT chỉ xảy ra khi sử dụng MySQL-python trình kết nối (trình điều khiển # 1), nhưng không có trong các trình kết nối khác (trình điều khiển # 2, # 3, # 4). Trong trường hợp của tôi, tôi đã chọn mysqlclient . Sự cố hiện đã không còn nữa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi một ngày trong MySQL từ trường chuỗi

  2. Không thể phát hiện giá trị null từ JSON_EXTRACT

  3. Kết nối MySQL qua đường hầm SSH - làm thế nào để chỉ định máy chủ MySQL khác?

  4. Thư viện không được tải:@ rpath / libmysqlclient.21.dylib Lý do:không tìm thấy hình ảnh Lỗi di chuyển Django sử dụng trình điều khiển DB mysqlclient và MySQL 8 với macOS

  5. Tạo bảng tạm thời trong MySQL Stored Procedure