1 遇到的错误
1.1 mysql服务启动不了
查看D:\mysql\3381\logs\mysql.err.log错误日志文件
1 | 2016-02-03 10:19:54 6448 [ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace mysql/innodb_table_stats uses space ID: 1 at filepath: .\mysql\innodb_table_stats.ibd. Cannot open tablespace scrapers/openpasts_records which uses space ID: 1 at filepath: .\scrapers\openpasts_records.ibd |
问题出现原因是,由于移动其他盘的空间扩充到系统盘,系统盘扩充不会受到影响,而其他盘的文件索引改变了导致问题出现。
解决方法:
1 停止mysql服务
2 备份数据库,删掉出问题的数据库
3 删掉D:\mysql\3381\data\data文件夹下ibdata1及log文件,删掉D:\mysql\3381\logs中的日志文件
4 重启mysqls服务,导入新库
测试主从。
主从参考:点一下
1.2 执行更新语句报错
1 | [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by |
原因:
查询SQL_MODE信息
1 | select @@global.sql_mode; |
对于GROUP by聚合操作,如果在select中的列没有在GROUP BY中出现,那么sql语句是不合法的,因为a列不在group by从句中。
select id,sum(date) from tt group by date; // 不合法的sql语句
解决方法:
1 | SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); |
类型长度
下载:https://dev.mysql.com/downloads/mysql/
int和bigint超限会改变值
char和varchar超限会截取值
win配置mysql
解压mysql-5.7.17-winx64.zip配置环境变量
新增编辑用户变量:
MYSQL_HOME
C:\mysql\mysql-5.7.17-winx64
在编辑系统变量中path变量新增%MYSQL_HOME%\bin;
初始化和配置
1 | C:\mysql\mysql-5.7.17-winx64\bin>mysqld --initialize |
增加服务
1 | C:\mysql\mysql-5.7.17-winx64\bin>mysqld -install |
启动停止服务
1 | C:\Users\Administrator>net stop mysql |
查看版本号
1 | C:\Users\Administrator>mysql -V |
配置my.ini文件
1 | # For advice on how to change settings please see |
net start mysql报错
1 |
|
或者遇到1067进程意外终止错误
解决方法:
1、打开任务管理器终止mysqld进程;
2、# 设置默认引擎(可分表)
default-storage-engine=MRG_MyISAM8
3、打开mysql安装目录的data文件夹,删除以下2个文件:
ib_logfile0和ib_logfile1
4、找到在配置MySQL服务器时指定的InfoDB目录删除掉ibdata1
根据my.ini文件中:
#* INNODB Specific options *
innodb_data_home_dir=”D:/“。
5、重新启动MySQL的Service
win下忘记mysql登录密码
1.停止服务再执行跳过权限登录命令
跳过权限命令
mysqld –defaults-file=”C:\mysql\mysql-5.7.17-winx64\my.ini” –console –skip-grant-tables
1 | C:\mysql\mysql-5.7.17-winx64\bin>net stop mysql |
出现以上效果说明已经跳过了权限,如果遇到10065错误,就先停止mysqld.exe进程
2.在新的CMD中执行命令
提示输入密码,直接按回车就好了。
1 | C:\mysql\mysql-5.7.17-winx64\bin>mysql -u root -p |
sql:update user u set u.authentication_string = PASSWORD(‘root’) WHERE u.user = ‘root’;
不同版本的mysql密码字段不一样,越过权限需要查看user表中字段信息
分表
参考地址:
http://www.cnblogs.com/miketwais/articles/mysql_partition.html
http://blog.csdn.net/shandalue/article/details/52035040
哪些引擎可以分表?