mysql不同的安装方式会导致是否生成my.ini文件,一般情况下使用ZIP安装时,安装好之后默认是没有my.ini配置文件。
当我们想修改数据库的配置信息,若没有my.ini文件会很麻烦。
当前情况如下:
数据库安装在E:Program FilesMySQLMySQL Server 5.7,该文件夹下没有my.ini,但是有my-default.ini。
根据网上的方式,把my-default.ini移除,复制一个my.ini文件放在当前安装目录下,my.ini内容如下(根据自己的实际情况进行配置):
# #此数据库没有my.ini文件,当前文件为后来增加的 # # [client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_bin init_connect='SET NAMES utf8mb4' # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. innodb_buffer_pool_size = 128M # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # These are commonly set, remove the # and set as required. #该参数指定了安装 MySQL 的安装路径,填写全路径可以解决相对路径所造成的问题。 basedir = E:/Program Files/MySQL/MySQL Server 5.7 #该参数指定了 MySQL 的数据库文件放在什么路径下。数据库文件即我们常说的 MySQL data 文件。 datadir = E:/Program Files/MySQL/MySQL Server 5.7/Data port = 3306 # server_id = ..... # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. join_buffer_size = 128M sort_buffer_size = 16M read_rnd_buffer_size = 16M #定义应该支持的sql语法,对数据的校验等等 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES max_allowed_packet=300M
注意问题:
根据自己的情况修改basedir和datadir;
特别是datadir,这台服务器有三个data文件夹,分别为
C:/ProgramData/MySQL/MySQL Server 5.7/Data
E:/ProgramData/MySQL/MySQL Server 5.7/Data
E:/Program Files/MySQL/MySQL Server 5.7/Data
也不知道为什么会这么乱,尝试着来吧,
datadir设置第一个,重启服务成功,但是其他配置没生效;
第二个,重启服务成功,配置生效,但是竟然丢失部分表数据,why?
第三个,重启服务成功,配置生效,数据正常。
说明datadir的值应该是数据库安装目录中data文件夹的路径,
另外两个应该是某位好心的同事重装或者删除数据库没整干净
发现一个挺不错的处理方式,但是我的服务器上运行的系统比较多,十几个库,算了算了,能跑就行。。。。