3
(hA	                 @   s8   d dl mZ d dlmZ d dlmZ G dd deZdS )    )checks)BaseDatabaseValidation)get_docs_versionc                   s0   e Zd Z fddZdd Z fddZ  ZS )DatabaseValidationc                s(   t t| jf |}|j| jf | |S )N)superr   checkextend_check_sql_mode)selfkwargsZissues)	__class__ G/tmp/pip-install-q3hcpn_q/Django/django/db/backends/mysql/validation.pyr      s    zDatabaseValidation.checkc             K   st   | j j }|jd |j }W d Q R X t|r<|d jdnf }|ddh@ sptjd| j j dt	 f dd	gS g S )
NzSELECT @@sql_moder   ,ZSTRICT_TRANS_TABLESZSTRICT_ALL_TABLESz9MySQL Strict Mode is not set for database connection '%s'a   MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/%s/ref/databases/#mysql-sql-modez
mysql.W002)Zhintid)

connectioncursorexecuteZfetchonesetsplitr   Warningaliasr   )r
   r   r   Zsql_modemodesr   r   r   r	      s    


z"DatabaseValidation._check_sql_modec                s   ddl m} tt| j|f|}t|dddkr|j|}|dkrF|S |jdr|jr|j	dksnt
|j	dkr|jtjd|dd	 |S )
z
        MySQL has the following field length restriction:
        No character (varchar) fields can have a length exceeding 255
        characters if they have a unique index on them.
        r   )r   Zremote_fieldNZvarchar   zBMySQL does not allow unique CharFields to have a max_length > 255.z
mysql.E001)objr   )Z	django.dbr   r   r   check_fieldgetattrZdb_type
startswithunique
max_lengthintappendr   Error)r
   fieldr   r   errorsZ
field_type)r   r   r   r      s    

zDatabaseValidation.check_field)__name__
__module____qualname__r   r	   r   __classcell__r   r   )r   r   r      s   r   N)Zdjango.corer   Z"django.db.backends.base.validationr   Zdjango.utils.versionr   r   r   r   r   r   <module>   s   