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文件,就会引发此错误。
解决方法:
mysql -h 127.0.0.1
这种时候,客户端就会走 http 连接,从而避免了这个问题。
命令行执行 sql 脚本
即便在 windows,filePath 也必须使用 “/”,否则会发生 “unknown command ‘” 之类的错误。
未连接数据库
mysql -h localhost -uroot -p123456 < filePath
已连接数据库
source filePath
常见问题
在已连接数据库执行脚本时,必须先选择数据库,否则会出现以下错误:
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)
