分类目录归档:MySQL

忘记MySQL root密码怎么办?

在配置文件的mysqld一节,增加skip-grant-tables选项:

[mysqld]
skip-grant-tables

 重启mysql服务。

service mysql restart

 在服务器本机进入mysql(不需要输入密码):

mysql

 此时已经是root权限,可以做任何事情。有一点需要注意,如果要操作系统表,如增加用户等,可能会报错:

The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

 这个时候,在MySQL命令提示符下执行:

set global read_only=0;
flush privileges;

 接下来就可以创建用户,修改密码了。不过别忘了,在所有操作执行完毕后,运行:

set global read_only=1;
flush privileges;

 接下来退出MySQL命令行,删除或者注释掉刚开始添加到mysql配置文件(my.cnf)中的

skip-grant-tables

最后,保存配置文件,重启mysql服务即可。

MySQL delete from变通方法

MySQL的delete from语句后面如果有子查询,那么子查询中不允许有where条件,下面是一个变通的方法:
drop table tmp_dummy_data
create table tmp_dummy_data
select key_columns
from source_table
group by key_columns
having count(*)>1

delete from source_table
where key_columns in (select key_columns
from tmp_dummy_data
)

有关Hibernate的一个疑问

最近在调用Query.executeUpdate()时,发现被影响的记录条数总是返回0;经过更换数据库驱动版本等努力均为解决。遂尝试改写SQL语句,使用SQLQuery,成功。

现在初步判断是Hibernate的Query.executeUpdate()返回值不是预期的结果,是我理解错了,还是确有问题,待验证。 Hibernate版本是3.6.7