60
This is how I fixed it.
Go to your django/db/backends/mysql installation dir.
Check your path in the error message.
I’m using pipenv so my path is:
/home/username/.local/share/virtualenvs/project-env/lib/python3.7/site-packages/django/db/backends/mysql
If you use traditional env your path would be:
<env_directory_name>/Lib/site-packages/django/db/base.py
Open file base.py and search for:
version = Database.version_info
Put a pass inside if and comment line:
raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required;
you have %s.’ % Database.version)
Like this.
if version < (1, 3, 13):
pass
'''
raise ImproperlyConfigured(
'mysqlclient 1.3.13 or newer is required; you have %s.'
% Database.__version__
)
'''
Save, close this file and open operations.py.
Search for:
query = query.decode(errors='replace')
and change decode to encode
query = query.encode(errors='replace')
Now, try to run the server.
@edit
Until this answer, I found no other way to solve it. Today there are better ways to deal with this problem. This answer has a better approach.
85
I guess your project uses pymysql instead of mysqlclient.
You can try to search the following code snippet in your project. If you find it, please try the following methods to fix this problem:
import pymysql
pymysql.install_as_MySQLdb()
Insert a line of code between these two to make it look like this:
import pymysql
pymysql.version_info = (1, 3, 13, "final", 0)
pymysql.install_as_MySQLdb()
Then try to start your project.
- Why do I know you are using pymysql? Because 0.9.3 is just the latest version of pymysql.
- Why use pymysql instead of mysqlclient for the project? Because it is easier to install. pymysql does not depend on system libraries, while mysqlclient relies on a series of system libraries such as libmysqlclient-dev.
- Why is mysqlclient difficult to install and Django still uses it by default? Because mysqlclient is faster and performs better. So if your project has high performance requirements, I suggest you remove the compatible code above and install mysqlclient in your project. If you need help during the installation of mysqlclient, please refer to this link: How to install Python MySQLdb module using pip?, and ensure
libssl-dev
has been installed beforepip install mysqlclient
.
- [Django]-Django-tables2: How to use accessor to bring in foreign columns?
- [Django]-Paginating the results of a Django forms POST request
- [Django]-Disable migrations when running unit tests in Django 1.7
8
I have had the same issue as lower version of mysqlclient was installed due to pymysql.
OS: Linux Mint 19.1
Python: 3.6.8
Django: 2.2.2
- Uninstall mysqlclient:
pip3 uninstall mysqlclient
- Uninstall pymysql:
pip3 uninstall pymysql
- Install mysqlclient:
pip3 install mysqlclient
- [Django]-Django rest framework lookup_field through OneToOneField
- [Django]-Putting a django login form on every page
- [Django]-On Heroku, is there danger in a Django syncdb / South migrate after the instance has already restarted with changed model code?
6
this problem occurs when you create Django project in pycharm by default settings.
It’s caused by the default version of django is 2.2.6, so just downgrade the django version to 2.1.7, and error in the terminal is gone.
pip install Django==2.1.7
that’s all!
- [Django]-Add rich text format functionality to django TextField
- [Django]-Django: sqlite for dev, mysql for prod?
- [Django]-How to add column in ManyToMany Table (Django)
6
It worked fine with me just open settings.py and include
import pymysql
pymysql.version_info = (1, 4, 6, 'final', 0)
pymysql.install_as_MySQLdb()
- [Django]-How to automatically run tests when there's any change in my project (Django)?
- [Django]-Is it secure to store passwords as environment variables (rather than as plain text) in config files?
- [Django]-How to update an object from edit form in Django?
3
Instead of edit internal configuration, try to upgrade the version of mysqlclient
pip3 install -U mysqlclient
- [Django]-Add inline model to django admin site
- [Django]-'function' object has no attribute 'as_view'
- [Django]-How to recursively query in django efficiently?
2
The following solution works in Django 3.2.3 to get rid of the ‘mysqlclient 1.3.13 or newer is required; you have 0.9.3’ problem:
1) pip uninstall mysqlclient # remove old version
2) pip install mysqlclient==1.3.13
3) comment or remove the old workaround in __init__.py of the main app.
# workaround django.core.exceptions.ImproperlyConfigured:
#Error loading MySQLdb module.
#Did you install mysqlclient?
#import pymysql
#pymysql.install_as_MySQLdb()
- [Django]-Generating PDFs from SVG input
- [Django]-How to check if a user is logged in (how to properly use user.is_authenticated)?
- [Django]-How to view database and schema of django sqlite3 db
1
-
Install wheel:
pip install wheel
-
Download file that you want from here: https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
-
Move to your Downloads directory (I guess it’ll be
cd Downloads
) - Install downloaded file with:
pip install <file name>
WARNING!! You CANT edit name of downloaded .whl file. It contains some information what is required to install.
- [Django]-How to set a Django model field's default value to a function call / callable (e.g., a date relative to the time of model object creation)
- [Django]-Unresolved attribute reference 'objects' for class '' in PyCharm
- [Django]-Disable button after submit with jQuery
0
I had a similar issue, I was getting
“django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 1.3.12.”
So I went to the C:\Users\username\Envs\env\Lib\site-packages\django\db\backends\mysql
, opened base.py and changed that line…
if version < (1, 3, 13):
to…
if version < (1, 3, 10):
which is a version lesser than mine and it worked.
- [Django]-Django REST Framework pagination links do not use HTTPS
- [Django]-Django BooleanField as radio buttons?
- [Django]-Django migrations RunPython not able to call model methods
0
If it’s not critical for you, as a variant, just downgrade your django framework
from 2.2.2
(for example) to 2.1
.
- [Django]-How do I use CreateView with a ModelForm
- [Django]-Django Query That Get Most Recent Objects From Different Categories
- [Django]-Django 2, python 3.4 cannot decode urlsafe_base64_decode(uidb64)
0
I was finding a solution for this issue from a long time. I was using Ubuntu 18.04 and found this solution to be useful for python version 3.7.5
Step 1. Install libpython3.7-dev via sudo apt-get install
> sudo apt-get install libpython3.7-dev
Step 2: Install mysqlclient
> python3 -m pip install mysqlclient==1.4.6
- [Django]-How to make Django slugify work properly with Unicode strings?
- [Django]-A better way to restart/reload Gunicorn (via Upstart) after 'git pull'ing my Django projects
- [Django]-What does error mean? : "Forbidden (Referer checking failed – no Referer.):"
0
If you are working with Django on ubuntu, i will suggest you do the following to resolve the issue than editing django specific configuration files
run the following commands in the terminal
-
sudo apt-get install python3-dev default-libmysqlclient-dev build-essential
-
pip install mysqlclient
- [Django]-Reverse for '*' with arguments '()' and keyword arguments '{}' not found
- [Django]-Django : DRF Token based Authentication VS JSON Web Token
- [Django]-Django – No module named _sqlite3
0
Maybe your Django project uses pymysql, instead of upgrading mysqlclient, just do
pip install pymysql -U
This works for me !
- [Django]-Empty Request.FILES with Django Upload forms
- [Django]-Loading fixtures in django unit tests
- [Django]-Django: return string from view
0
In my case i just deleted all the pymysql code in either settings.py or init.py__. Left out mysqlclient installed. The problem was solved
- [Django]-Best way to write an image to a Django HttpResponse()
- [Django]-Serializing list to JSON
- [Django]-How to add Check Constraints for Django Model fields?
-1
There are the same issue on github. Solution that perfectly fits for me is here.
I just quote an author:
I first pip uninstall pymysql (as it seems it doesn’t work anymore)
Then I’ve used pip install mysqlclient
Last, I checked all my "pymysql" imports and deleted them.
Be sure to go and hit a like button on the comment in the link
- [Django]-Inject errors into already validated form?
- [Django]-Returning pure Django form errors in JSON
- [Django]-How can I auto-populate a PDF form in Django/Python?
-1
Go to your virtual environment directory like mine:
C:\Users\user\.virtualenvs\RPA-Orchestrator-Backend-GwIL98hN\Lib\site-packages\django\db\backends\mysql\base.py
Here you might edit one line to avoid your error in the base.py file,
version = Database.version_info
if version < (0, 9, 3):
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
Then your problem might solve.
- [Django]-Django models – how to filter number of ForeignKey objects
- [Django]-Django's self.client.login(…) does not work in unit tests
- [Django]-Workflow frameworks for Django