分类 mysql 下的文章

mysql json_table 与表关联的有效查法

select 表字段,  from 表名 join json_table(表名.json字段 , 
          "$[*]" COLUMNS(
            xval VARCHAR(100) PATH "$.json的key1",
            yval VARCHAR(100) PATH "$.json的key2"
          )
        ) AS  tmp1  where  条件表达式

last_insert_id() 为0添加表的触发器后TRIGGER

原本一切正常,但是当我添加了触发器后, 通过调试得知last_insert_id() 返回为0,这让我百思不得其解,所以马上翻看相关资料.

mysql_insert_id()返回 0如果前面的语句未使用的
AUTO_INCREMENT值。如果您必须保存该值以备后用,请确保mysql_insert_id()在生成该值的语句之后立即调用 。

根据 mysql的文档,应该是添加触发器后,触发器的语句在mysql_insert_id()之前先执行了,导致返回 0。

mysql 8 更改数据存放目录

再配置文件中 修改 datadir=/新的目录
启动后发现 mysql起不来,
报权限问题
折腾了好久 都没有弄好, 中间辛酸过程略过

查了很多资料都无果,
最后去mysql官方查资料,安装他的文档,解决

https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html
文档地址如上:

mkdir mdata  #到相关目录创建 mdata目录 chown mysql:mysql mdata chmod 750 mdata
mysqld --initialize --user=mysql #这应该是比较关键的一步,没有这一步都是失败告终 
mysqld --initialize --datadir=/mdata 
service mysql restart

ubuntu 桌面版安装mysql-server后怎么登录?

sudo apt install mysql-server

命令执行完后mysql服务端就安装好了, 然而 mysql -uroot -p并没有办法登录,安装过程中也没有让人设置root密码的过程,遂全网搜索,得到如下又用的信息

  vi /etc/mysql/debian.cnf

可以看到安装mysql-server 对应的账户秘密

mysql error id 1370

场景:
做了阿里云RDS 的读写分离,添加了一个新的账号,连接地址换成了读写分离的地址,然后某些功能突然用不了了,查了log 发现mysql 报了1370的错误,遂查之:
原来是新加的这个账号没有对应的权限,把权限加好就无问题了。

grant execute on procedure 名称.过程名 to '账号'@'Host';
grant execute on function 数据库名称.函数名 to '账号'@'Host';
#Host  可以是 IP地址 或者  % 或者 localhost

最后执行 flush privileges; 使之生效