MySQL修改配置文件增加表空间个数导致系统无法启动[转]

本文解决了一个关于MySQL启动时遇到的InnoDB数据文件大小配置不一致的问题,详细介绍了如何调整my.cnf中innodb_data_file_path参数,以匹配实际的ibdata1文件大小,避免启动错误。

修改配置文件启动MySQL报错:

2017-05-31T10:31:05.945111Z 0 [Note] InnoDB: Need to create a new innodb_system data file 'ibdata2'.
2017-05-31T10:31:05.945126Z 0 [Note] InnoDB: Need to create a new innodb_system data file 'ibdata3'.
2017-05-31T10:31:05.945131Z 0 [Note] InnoDB: Need to create a new innodb_system data file 'ibdata4'.
2017-05-31T10:31:05.945162Z 0 [ERROR] InnoDB: The innodb_system data file '/opt/mysql5718/data/ibdata1' is of a different size 768 p
ages (rounded down to MB) than the 6400 pages specified in the .cnf file!
2017-05-31T10:31:05.945171Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2017-05-31T10:31:06.545674Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
2017-05-31T10:31:06.545710Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-05-31T10:31:06.545716Z 0 [ERROR] Failed to initialize plugins.
2017-05-31T10:31:06.545722Z 0 [ERROR] Aborting

实际ibdata1文件大小:

[mysql@izwz9gxsbwybwg9n5xdi47z data]$ ls -al ibdata1
-rw-r----- 1 mysql mysql 12582912 May 31 18:45 ibdata1

配置文件ibdata文件大小:

innodb_data_home_dir=/opt/mysql5718/data
innodb_data_file_path=ibdata1:100M;ibdata2:100M;ibdata3:100M;ibdata4:100M:autoextend

解决办法:

可以看到修改ibdata1大小跟实际的不一样(different size 768 pages (rounded down to MB) than the 6400 pages specified in the .cnf file!),导致报错误.

768/64=12M			#1 page = 1/64M

修改my.cnf文件参数如下innodb_data_file_path
innodb_data_file_path=ibdata1:12M;ibdata2:100M;ibdata3:100M;ibdata4:100M:autoextend

systemctl restart mysqld
重新启动,问题解决.
<think>好的,用户想知道如何在MySQL 8.0中通过修改my.cnf配置文件来设置空间坐标的经纬度顺序和SRS。首先我需要回忆一下MySQL 8.0中关于空间数据处理的配置选项。 根据之前的知识,MySQL 8.0引入了对地理空间参考系统(SRS)的支持,允许用户自定义坐标系。但直接修改my.cnf来调整经纬度顺序可能不太常见,通常可能需要通过ALTER语句或者设置系统变量来实现。不过用户特别提到了配置文件,所以需要确认是否有相关的系统变量可以在配置文件中设置。 查阅资料发现,MySQL 8.0确实允许通过配置系统变量来调整某些空间数据的处理方式。例如,系统变量如`lax_geometry`或者`srid`的设置可能会影响坐标顺序。但具体到经纬度的顺序,可能需要调整SRS定义。MySQL默认遵循的是纬度在前,经度在后(例如在WGS84中),但用户可能希望反这个顺序。 这时候想到,MySQL的SRS信息存储在`st_spatial_reference_systems`表中,用户可以修改或添加自定义的SRS定义。不过这个过程通常是通过SQL语句而不是配置文件。不过,用户可能需要在配置文件中设置默认的SRS,或者调整某些全局变量来应用自定义的SRS。 另外,注意到引用中提到mysqld-auto.cnf的优先级高于my.cnf,因此用户需要确保修改的是正确的配置文件,或者在两个文件中都进行设置。不过通常建议使用SET PERSIST命令来持久化系统变量,这样MySQL会自动更新mysqld-auto.cnf,避免手动编辑可能导致的错误。 总结可能的步骤:首先通过SQL定义或修改SRS的坐标顺序,然后在配置文件中设置相关的系统变量,如默认的SRID,或者在启动时加载自定义的SRS定义。需要验证这些步骤是否正确,并确保用户清楚如何操作。</think>在MySQL 8.0中调整空间坐标的经纬度顺序与SRS(空间参考系统)设置,需要通过以下步骤操作: ### 1. 理解SRS与坐标顺序 MySQL默认遵循**经度在前、纬度在后**的WKT(Well-Known Text)格式(即$X,Y$顺序),这与OGC标准一致。若需改为$纬度,经度$(Y,X),需自定义SRS定义[^1]。 ### 2. 修改SRS定义 通过SQL语句修改`st_spatial_reference_systems`表中的坐标系定义: ```sql UPDATE mysql.st_spatial_reference_systems SET definition = REPLACE(definition, 'AXIS["Lon", EAST], AXIS["Lat", NORTH]', 'AXIS["Lat", NORTH], AXIS["Lon", EAST]') WHERE srs_id = 4326; -- 修改WGS84的坐标轴顺序 ``` ### 3. 配置文件设置 在`my.cnf`中添加持久化配置(需重启MySQL): ```ini [mysqld] # 强制使用自定义SRS srid = 4326 # 允许非标准几何格式 loose-lax-geometry = ON ``` ### 4. 验证配置优先级 确保修改生效: ```sql SHOW VARIABLES LIKE 'srid'; -- 查看当前SRID SELECT ST_AsText(ST_GeomFromText('POINT(30 120)', 4326)); -- 测试坐标顺序 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值