GVKun编程网logo

MySQL 加入更新因索引太大而失败(mysql 加入更新因索引太大而失败怎么办)

3

对于MySQL加入更新因索引太大而失败感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解mysql加入更新因索引太大而失败怎么办,并且为您提供关于Can''tconnecttolocalMyS

对于MySQL 加入更新因索引太大而失败感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解mysql 加入更新因索引太大而失败怎么办,并且为您提供关于Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)、Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''、CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?的宝贵知识。

本文目录一览:

MySQL 加入更新因索引太大而失败(mysql 加入更新因索引太大而失败怎么办)

MySQL 加入更新因索引太大而失败(mysql 加入更新因索引太大而失败怎么办)

如何解决MySQL 加入更新因索引太大而失败

我正在使用 Python 来填充 MysqL 5.7.26 中的一些表。不过,Python 是无关的。在数据库上手动运行查询时也会出现此问题。

我正在向某个临时表添加数据,例如 tmp_source,并且由于缺少 MERGE 语句,然后我在目标表 {{1} 上执行了 INNER JOIN UPDATE } 后跟一个 destination。查询看起来像这样:

  1. LEFT JOIN INSERT

目的是更新现有行并插入缺失的行,如 MERGE。但是,虽然插入工作正常,但更新有时会由于以下原因而失败:

1071,''指定的键太长;最大密钥长度为 1024 字节''

我不允许在结构上修改 UPDATE destination D INNER JOIN tmp_source S ON D.col1 = S.col1 AND D.col2 = S.col2 SET D.col3 = S.col3,D.col4 = S.col4; INSERT INTO destination SELECT * FROM tmp_source S LEFT JOIN destination D ON D.col1 = S.col1 AND D.col2 = S.col2 WHERE D.col1 IS NULL; 表。它有一些制作不佳的索引(例如 destination 用于真正永远不会超过 50 个字符的列),我知道这会带来问题。

我尝试使用和不使用索引创建 VARCHAR(256) - 没有骰子。

有什么办法可以在不改变 tmp_source 表的情况下克服这个问题?我有一个“这很愚蠢,但它有效,所以它并不愚蠢” 生成静态更新并仅运行这些更新的想法,例如:

  1. destination

这个想法是我没有处理大量的数据。我可以捕获这个特定的异常,并且只对发生这种情况的表执行此操作。有问题的表通常少于 200 行。在这种情况下,速度并不是真正的关键。

但感觉像是一种解决方法(可能是因为它)。有人有更好的主意吗?

解决方法

所以......我突然想到我基本上忘记了书中最古老的技巧之一:删除-插入。

显然可以在 destination 上执行 DELETE,然后执行 INSERT。如果我想在 DELETE 之前保留某些值,我什至可以更新 tmp_source 表。

所以它会是这样的:

  1. UPDATE tmp_source D
  2. INNER JOIN destination S
  3. ON D.col1 = S.col1
  4. AND D.col2 = S.col2
  5. SET D.col5 = S.col5,D.col6 = S.col6;
  6. DELETE D
  7. FROM destination D
  8. INNER JOIN tmp_source S
  9. ON D.col1 = S.col1
  10. AND D.col2 = S.col2;
  11. INSERT INTO destination
  12. SELECT * FROM tmp_source S
  13. LEFT JOIN destination D
  14. ON D.col1 = S.col1
  15. AND D.col2 = S.col2
  16. WHERE D.col1 IS NULL;
,

您是否尝试过使用替换查询? Replace 服务于 update 和 Insert 属性。 如果某些数据从增量值更改,则更新或插入。 谢谢!

Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)

Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)

ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)

 

 

 

原因:系统盘满了

[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 17G 0 100% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 477M 80M 372M 18% /boot
[root@localhost opt]#

解决:

删除大文件后,重启系统解决

 

 

[root@localhost mysql]# /opt/lampp/lampp status
Version: XAMPP for Linux 1.8.3-3
Apache is not running.
MySQL is not running.
ProFTPD is running.

 

df: 未处理文件系统
[root@localhost opt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 17G 0 100% /
tmpfs 504M 0 504M 0% /dev/shm
/dev/sda1 477M 80M 372M 18% /boot
[root@localhost opt]#

 

 

[root@localhost ~]# /opt/lampp/lampp status
Version: XAMPP for Linux 1.8.3-3
Apache is not running.
MySQL is running.
ProFTPD is running.

 

 

 

xampp 无法启动mysql 找不到mysql.sock

  (2016-02-24 23:21:24)
转载
  分类: 技术
出现的问题:
如果xampp中的mysql启动不了,出现ERROR 2002 (HY000): Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)报错,
停止xampp的时候报:
-bash-4.1# /opt/lampp/lampp stop
Stopping XAMPP for Linux 1.8.2-6...
XAMPP: Stopping Apache...ok.
XAMPP: Stopping MySQL...ok.
XAMPP: Stopping ProFTPD...kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
fail.

解决办法:
如果网上一些方法不好用的话,可以试试以下方法:
1. 确定系统盘是否满了
#df -h
2. 删除/opt/lampp目录中的pid文件(删掉后xampp重启时会重建,如果不放心,可以先备份lampp目录)
删除mysql相关缓存:
#rm -rf /opt/lampp/var/mysql/VM_*  
删除proftp相关缓存:
#rm -rf /opt/lampp/var/proftpd.pid
如果找不到pid文件,可以搜一下:
#find /opt/lampp -name ''*.pid''

 

Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''

Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''

MySQL已经被我移到数据盘了,本地连接数据库会报错:Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''

但是远程是可以连接的,my.cnf设置mysql的根目录也改成了数据盘的地址,还要在加上client的参数,设置如下:

[client]
socket = /home/data/mysql/mysql.sock

之后重启下mysql就可以了

CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

亲,是不是忘记了开MysqL服务,service MysqLd start

centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?

centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?

centos7 设置 mysql 自启动的配置文件中

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#Restart=on-failure
#RestartPreventExitStatus=1
#PrivateTmp=false

这里的

[Service]

User=mysql

Group=mysql,

user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?还是其他呢?

我们今天的关于MySQL 加入更新因索引太大而失败mysql 加入更新因索引太大而失败怎么办的分享就到这里,谢谢您的阅读,如果想了解更多关于Can''t connect to local MySQL server through socket ''/opt/lampp/var/mysql/mysql.sock'' (2)、Can''t connect to local MySQL server through socket ''/var/lib/mysql/mysql.sock''、CentOS yum安装mysql后 Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?的相关信息,可以在本站进行搜索。

本文标签: