- 查看、修改数据库、表、行字符编码
SHOW CREATE DATABASE db_name;
ALTERDATABASE mydb CHARACTER SET utf-8(utf8) COLLATE utf8_general_ci
SHOW CREATE TABLE tbl_name;
ALTER TABLE logtest CONVERT TO CHARACTERSET utf8 COLLATE utf8_general_ci;
SHOW FULL COLUMNS FROM tbl_name;
ALTER TABLE `release` MODIFY COLUMN `note` text CHARACTER SET utf8 COLLATE utf8_unicode_ci;
- mysql sum为空时默认显示0 用sum没有值时得到的值是NULL,这个时要用到mysql的函数COALESCE,作用是将返回传入的参数中第一个非null的值。
SELECT COALESCE(sum(price),0) AS total FROM orders;
MySQL在使用IN查询语句时,如果IN中包含子查询,则索引会失效。
查看配置文件路径
select @@basedir;
不一定有效果,建议通过
mysql --help|grep 'my.cnf'
查找查看数据存储路径
select @@datadir;
查看当前时区
mysql> show variables like '%time_zone%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CST | | time_zone | SYSTEM | +------------------+--------+ 2 rows in set (0.00 sec)
修改时间,找到my.conf文件
[mysqld] default-time-zone = '+8:00'
当排序很影响效率的时候,试试只取主键,通过取得的主键来筛选数据
出现
mysqld_safe mysqld from pid file /var/lib/mysql/mysqld.pid ended
此问题SQL中更新字段兼条件的值变化
UPDATE `pm_etf_projects` SET `portion_actual` = portion_actual - 10000, `status` =IF (portion_actual > 0, 5, 7) WHERE `pm_etf_projects`.`deleted_at` IS NULL AND ( ( nid = '20210207143324' AND STATUS = 5 AND portion_actual - 10000 >= 0 ) );
portion_actual = portion_actual - 10000
中的portion_actual
为原始值status =IF (portion_actual > 0, 5, 7)
中的portion_actual
为前面更新后的值AND portion_actual - 10000 >= 0
中的portion_actual
为原始值mysqldump 导出数据库报错 “does not exist when using LOCK TABLES”
之所以会出现这样的问题,是因为mysqldump在导出的时候会请求锁定导出数据库中的所有表,以保证数据的一致性。但是导出时如果数据库在使用状态,则会出现 “does not exist when using LOCK TABLES”错误。 解决方法是在导出时加上-x选项。 例如:mysqldump -uroot -p -h127.0.0.1 -x test>/tmp/test.sql
DROP DATABASE IF EXISTS womapi_cn;
CREATE DATABASE womapi_cn DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
use womapi_cn;
\. /var/lib/mysql/womapi_cn_empty.sql