mysql小知识点汇总---(时间与时间戳的转换, 修改mysql用户名密码, navicate 导入sql文件报错 1153)

时间:2023-03-09 02:23:15
mysql小知识点汇总---(时间与时间戳的转换, 修改mysql用户名密码, navicate 导入sql文件报错 1153)

1. 时间与时间戳的转换

1.1 时间戳转时间

FROM_UNIXTIME(add_time, '%Y-%m-%d')

1.2 时间转时间戳

UNIX_TIMESTAMP('2015-04-29')

2. 修改mysql用户名或者密码

2.1 修改用户名

mysql -u root -p
Enter password:***
mysql> use 你的数据库; 选择数据库
Database changed
mysql> update user set user="新的用户名" where user="原来的用户名";
mysql> flush privileges; 刷新权限
mysql> exit

2.2 修改密码

mysql -u root -p
Enter password:***
mysql>use 你的数据库;
Database changed
mysql> UPDATE user SET password=PASSWORD("新密码") WHERE user='你的用户名';
mysql> FLUSH PRIVILEGES;
mysql> quit;

 3. Navicat导入数据报错-1153-Gotapacketbiggerthan'maxallowedpacket'bytes

原因:  mysql默认执行sql文件的大小最大值为16M,如果超过这个数值就会报错

解决: 修改mysql的配置文件, 如my.ini 设置 max_allowed_packet=500M(具体大小看情况而定)

4. mysql 判断字段是否存在, 不存在则添加该字段

DROP PROCEDURE IF EXISTS schema_change;
DELIMITER //
CREATE PROCEDURE schema_change() BEGIN
DECLARE CurrentDatabase VARCHAR(100);
SELECT DATABASE() INTO CurrentDatabase;
IF NOT EXISTS (SELECT * FROM information_schema.columns WHERE table_schema=CurrentDatabase AND table_name = 'activity_log' AND column_name = 'desc') THEN
ALTER TABLE activity_log
ADD COLUMN `desc` TINYINT NOT NULL DEFAULT 0 COMMENT '666';
END IF;
END//
DELIMITER ;
CALL schema_change();

  

5. 判断索引是否存在,不存在创建

DROP PROCEDURE IF EXISTS schema_change;
DELIMITER //
CREATE PROCEDURE schema_change() BEGIN
DECLARE CurrentDatabase VARCHAR();
SELECT DATABASE() INTO CurrentDatabase;
IF NOT EXISTS (SELECT * FROM information_schema.statistics WHERE table_schema=CurrentDatabase AND table_name = 'activity_log' AND index_name = 'log_index') THEN
ALTER TABLE `activity_log` ADD INDEX index_name ( `log_index` );
END IF;
END//
DELIMITER ;
CALL schema_change();