此时路过一个菜的一批的Programmer
之前数MySql数据被我玩炸了,用的是MySql5.7版本,后来各种重装到最后一步都没反应,干脆直接装了个MySql8.0?。然后问题来了,我的PyCharm连不上数据库了!!!怎么肥四?经过多方排查终于找到问题。
一、事情是这样的
当我测试连接数据库的时候发生了酱的事情:
就是下面的东西
4/1/2019
2:54 PM java.lang.RuntimeException: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)
at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:132)
at com.mysql.cj.protocol.... (show balloon)
2:54 PM news@localhost: java.lang.RuntimeException: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öй ... more
之前还用得好好的,怎么突然间给我整了个这???难道今天愚人节,系统也开始玩我了么???
二、经过一番冷静分析
想了想好像自己做的项目是Django项目,是不是settings.py
没整好?然后我就开始整
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎用MySQL
'NAME': 'database_name', # 数据库名称
'USER': 'root', # 用户名
'PASSWORD': '123456', # 数据库密码
'HOST': 'localhost', # 默认是localhost
'PORT': '3306' # MySQL的默认端口号3306
}
}
# Password validation
# https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
别忘了还有同目录下的__init__.py
文件
import pymysql
pymysql.install_as_MySQLdb()
三、然而事情没这么简单
本以为这样就大功告成了啊,但是在测试连接的时候还是报了同样的错??
后来也不知道怎么想的,好像当初装完MySql8.0之后没有设置数据库的时区!!!!
然后我怀着忐忑的心态,去尝试了一下:
- 在终端上打开mysql;
- 设置时区;
- 然后跟他说再见;
四、终于解决了?
重新测试,连接数据库
四、总结
嘤嘤嘤,本来真的以为是愚人节,JetBrain给我整的玩笑呢,嘤嘤嘤?,谁知道真的是我太菜了,才会忽视MySQL数据库设置时区的问题啊,好菜啊???
Tips:希望大家看了这篇文章之后,不要说我菜,嘤?