MySQL

一、查看 MySQL 设置的变量值:SHOW VARIABLES; 详情见 SHOW 语法:http://dev.mysql.com/doc/refman/5.5/en/show.html

二、windows 下忘记 root 密码的解决方法:
1、关闭 MySQL 服务
2、cmd 进入 mysqld 所在文件夹
3、cmd 下运行 mysqld –skip-grant-tables # 跳过授权表启动 MySQL 服务
4、打开新的 cmd 窗口
运行 mysql -uroot -p
提示输入密码继续回车 # 此时 root 的密码为空
use mysql # 选择 mysql 库
UPDATE user SET Password=PASSWORD(‘newpassword’) where USER=’root’; # 更改 root 密码
FLUSH PRIVILEGES; # 刷新权限,至此,完成

三、查看 MySQL-Server 的详细信息(加载配置文件的路径)
cmd 模式进入这个目录 \Program Files\MySQL\MySQL Server5.6\bin
运行:mysqld –verbose –help
在输出里面查找 “Default options are read from the following files in the given order” 就可以找到配置文件的路径。
或者,在计算机管理-服务里面找到 MySQL 的服务,查看服务属性,你就会看到加载的配置文件了。

四、开启慢查询

五、mysql按编码计算字符长度而不是字节数, varchar(100) 表示容量为100个utf-8编码的字符个数,不是100个字节,插入超过容量长度的字符会被自动截断。如果varchar设定了utf8编码,varchar(2) => 两个汉字,比如[你好]。

六、As of MySQL 5.1.29, the –log-slow-queries option is deprecated and is removed (along with the log_slow_queries system variable) in MySQL 5.6. Instead, use the –slow_query_log option to enable the slow query log and the –slow_query_log_file=file_name option to set the slow query log file name.

七、In MySQL, JOIN, CROSS JOIN, and INNER JOIN are syntactic equivalents (they can replace each other). In standard SQL, they are not equivalent. INNER JOIN is used with an ON clause, CROSS JOIN is used otherwise.

八、重命名表语句:ALTER TABLE 旧表名 RENAME TO 新表名;

九、今天出现错误:Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_c,IMPLICIT) for operation ‘=’。两个表在 JOIN 查询时,因为表的编码不一样,导致出现此错误,请将编码改为 utf8_general_ci 即可(2013-11-08 18:29:03)

Foreign key constraint is incorrectly formed

朋友,如果你也遇到了这个问题,建立外键的字段必须和引用表的字段一模一样的类型,请用 show create table table_name 查看是否一致。

今天在给一个表建外键的时候出现如题所示错误。

情况是这样的。我有一个bysj_student表,结构如下:

还有另一个bysj_stu_sub表,结构如下:

bysj_stu_sub表里的student_id是bysj_student表的外键,但是在创建bysj_stu_sub表时,会提示错误:

网上搜索之后才明白,建立外键的字段必须和引用表的字段一模一样的类型
于是将bysj_stu_sub表的student_id字段属性改为

再建表就没有问题了。

(原博客发布时间:2011-11-27 09:27:26)

MySQL UNION 用法

有这样两张表 post 和 postmeta。

表 post 结构如下

表 postmeta 结构如下

想获取所有文章,并且按全部阅读量排序,理所当然,我写出了这样的查询语句:

运行,提示 SQL 语法错误。查看 MySQL 官方文档,总结出 JOIN 两边必须是表(有错还希望看官您指出),因此,我加了一个子句。如下,OK。

Linux 下利用 mdbtools 将 access 数据库导入到 MySQL 数据库

我的系统是:Ubuntu 12.10

access 数据库名为:old_database.mdb

MySQL 数据库名为:new_database

MySQL 用户名为:USER

MySQL 密码为:PASS

1、首先安装 mdbtools,mdbtools 包括:mdb-array mdb-header mdb-parsecsv mdb-schema mdb-tables mdb-export mdb-hexdump mdb-prop mdb-sql mdb-ver 等工具

2、导入表结构

3、查看 access 数据库中的表

3、导入表数据。多次执行此命令,每次导入一个表,假设当次导入的表名为 table_name