Mysql 登录失败

参考链接:https://www.cnblogs.com/Lam7/p/6090975.html
问题:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
原因:
这是由于我们连接数据库使用的主机名参数为“localhost”,或者未使用主机名参数、服务器默认使用“localhost”做为主机名。 使用主机名参数为“localhost”连接mysql服务端时,mysql客户端会认为是连接本机,所以会尝试以socket文件方式进行连接(socket文件连接方式,比“ip:端口”方式效率更高),这时根据配置文件“/etc/mysql.cnf”的路径,未找到相应的socket文件,就会引发此错误。
解决方法:

  1. mysql -h 127.0.0.1

这种时候,客户端就会走 http 连接,从而避免了这个问题。

命令行执行 sql 脚本

即便在 windows,filePath 也必须使用 “/”,否则会发生 “unknown command ‘” 之类的错误。

未连接数据库

mysql -h localhost -uroot -p123456 < filePath

已连接数据库

source filePath

常见问题

  1. 在已连接数据库执行脚本时,必须先选择数据库,否则会出现以下错误:

    ERROR 1064 (42000): You have an error in your SQL syntax;
    

    Mysql Driver

    last_insert_id, 获取上1条插入的 id

    last_insert_id() 这个没有并发问题, 有文档可查(https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_last-insert-id).
    在使用同一个客户端连接时, 不同之间的客户端链接是不受影响的. 可以在批量执行的时候使用:

    使用场景

    批量插入时可用

      for s in list:
            sql_list = ["""insert sql ....;""" % ( mongos.id, task_key, self.task_id)]
    
            sql_list.append(r"""set @task_id = (SELECT LAST_INSERT_ID())""")
    
            sql_list.append(r"""update xx_table set task_id=@task_id """)
    
            conn.do_batch_update(sql_list)