mysql创建错怎么结束 mysql创建表错误( 三 )


./mysql_install_db --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --defaults-file=/etc/my.cnf --user=mysql
Top 4:数据库密码忘记的问题
[root@zs ~]# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
[root@zs ~]# mysql -uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我们有可能刚刚接手别人的 MySQL 数据库,而且没有完善的交接文档 。root 密码可以丢失或者忘记了 。
解决思路:
目前是进入不了数据库的情况,所以我们要考虑是不是可以跳过权限 。因为在数据库中,mysql数据库中user表记录着我们用户的信息 。
解决方法:
启动 MySQL 数据库的过程中,可以这样执行:
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --skip-grant-tables
这样启动,就可以不用输入密码,直接进入 mysql 数据库了 。然后在修改你自己想要改的root密码即可 。
update mysql.user set password=password('root123') where user='root';
Top 5:truncate 删除数据,导致自动清空自增ID,前端返回报错 not found 。
这个问题的出现,就要考虑下 truncate 和 delete 的区别了 。
看下实验演练:
首先先创建一张表;
CREATE TABLE `t` (
`a` int(11) NOT NULL AUTO_INCREMENT,
`b` varchar(20) DEFAULT NULL,
PRIMARY KEY (`a`),
KEY `b` (`b`)
) ENGINE=InnoDB AUTO_INCREMENT=300 DEFAULT CHARSET=utf8
插入三条数据:
mysql insert into t (b) values ('aa');
Query OK, 1 row affected (0.00 sec)
mysql insert into t (b) values ('bb');
Query OK, 1 row affected (0.00 sec)
mysql insert into t (b) values ('cc');
Query OK, 1 row affected (0.00 sec)
mysql select * from t;
+-----+------+
| a | b |
+-----+------+
| 300 | aa |
| 301 | bb |
| 302 | cc |
+-----+------+
3 rows in set (0.00 sec)
先用 delete 进行删除全表信息,再插入新值 。
结果发现 truncate 把自增初始值重置了 , 自增属性从1开始记录了 。当前端用主键id进行查询时,就会报没有这条数据的错误 。
个人建议不要使用 truncate 对表进行删除操作,虽然可以回收表空间,但是会涉及自增属性问题 。这些坑,我们不要轻易钻进去 。
Top 6:
阿里云 MySQL 的配置文件中,需要注意一个参数设置就是:
lower_case_table_names = 0;默认情况
lower_case_table_names = 1;是不区分大小写 . 如果报你小写的表名找不到, 那你就把远端数据库的表名改成小写 , 反之亦然 . 注意 Mybatis 的 Mapper 文件的所有表名也要相应修改
Top 7:
有同学经常会问张老师,为什么我的数据库总会出现中文乱码的情况 。一堆????不知道怎么回事 。当向数据库中写入创建表 , 并插入中文时,会出现这种问题 。此报错会涉及数据库字符集的问题 。
解决思路:
对于中文乱码的情况,记住老师告诉你的三个统一就可以 。还要知道在目前的mysql数据库中字符集编码都是默认的UTF8
处理办法:
1、数据终端,也就是我们连接数据库的工具设置为 utf8
2、操作系统层面;可以通过 cat /etc/sysconfig/i18n 查看;也要设置为 utf8
3、数据库层面;在参数文件中的 mysqld 下,加入 character-set-server=utf8 。
Emoji 表情符号录入 mysql 数据库中报错 。
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x97\xF0\x9F...' for column 'CONTENT' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)

推荐阅读