对于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 加入更新因索引太大而失败怎么办)
- 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 加入更新因索引太大而失败
我正在使用 Python 来填充 MysqL 5.7.26 中的一些表。不过,Python 是无关的。在数据库上手动运行查询时也会出现此问题。
我正在向某个临时表添加数据,例如 tmp_source
,并且由于缺少 MERGE
语句,然后我在目标表 {{1} 上执行了 INNER JOIN UPDATE
} 后跟一个 destination
。查询看起来像这样:
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
表的情况下克服这个问题?我有一个“这很愚蠢,但它有效,所以它并不愚蠢” 生成静态更新并仅运行这些更新的想法,例如:
destination
这个想法是我没有处理大量的数据。我可以捕获这个特定的异常,并且只对发生这种情况的表执行此操作。有问题的表通常少于 200 行。在这种情况下,速度并不是真正的关键。
但感觉像是一种解决方法(可能是因为它)。有人有更好的主意吗?
解决方法
所以......我突然想到我基本上忘记了书中最古老的技巧之一:删除-插入。
显然可以在 destination 上执行 DELETE,然后执行 INSERT。如果我想在 DELETE 之前保留某些值,我什至可以更新 tmp_source 表。
所以它会是这样的:
,
UPDATE tmp_source D
INNER JOIN destination S
ON D.col1 = S.col1
AND D.col2 = S.col2
SET D.col5 = S.col5,D.col6 = S.col6;
DELETE D
FROM destination D
INNER JOIN tmp_source S
ON D.col1 = S.col1
AND D.col2 = S.col2;
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;
您是否尝试过使用替换查询? Replace 服务于 update 和 Insert 属性。 如果某些数据从增量值更改,则更新或插入。 谢谢!
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''
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’
亲,是不是忘记了开MysqL服务,service MysqLd startcentos7 设置 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 的登录用户名?的相关信息,可以在本站进行搜索。
本文标签: