MySql报错: You can't specify target table 'table name' for update in FROM clause

MySql报错: You can't specify target table 'table name' for update in FROM clause,第1张

错误提示:不能先将select出表中的某些值,再update这个表(在同一语句中)。

替换方案

方案一:

多嵌套一层子查询,再进行删除,如下:

完整代码如下:

DELETE FROM blur_article WHERE id NOT IN (

SELECT id FROM (

SELECT min(id) AS id FROM blur_article GROUP BY title

) t

)

方案二:

1.创建一张临时表,将要删除的条件自动存入临时表中:

2.再根据临时表,删除主表数据:

3.最后删除掉临时表:

完整代码如下:

1.create table temp as select min(id) as col1 from blur_article group by title

2.delete from blur_article where id not in (select col1 from tmp)

3.drop table tmp

启动mysql时报错的解决(mysql 5.0.45 redhat as 43)

启动mysql时报错:

Starting mysqld daemon with databases from /var/lib/mysql

STOPPING server from pid file /var/run/mysqld/mysqld.pid

071112 00:22:06 mysqld ended

查看日志:

#less /var/log/mysqld.log

其中有一段如下:

071112 0:22:06 [ERROR] /usr/local/mysql/bin/mysqld: Can't create/write to file '/var/run/mysqld/mysqld.pid' (Errcode: 2)

071112 0:22:06 [ERROR] Can't start server: can't create PID file: No such file or directory

071112 00:22:06 mysqld ended

#cd /var/run/

#ls

mysqld目录不存在,创建它:

#mkdir /var/run/mysqld

#cd /var/run/mysqld

创建文件mysqld.pid:

#touch mysqld.pid

#cd..

#chown -R mysql mysqld .

#cd /usr/local/mysql/

#bin/mysqld_safe --user=mysql &

nohup: ignoring input and redirecting stderr to stdout

Starting mysqld daemon with databases from /var/lib/mysql

能正常启动

#bin/mysqladmin -u root password root

又出错

[root@localhost mysql]# bin/mysqladmin -u root password root

bin/mysqladmin: connect to server at 'localhost' failed

error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'

Check that mysqld is running and that the socket: '/tmp/mysql.sock' exists!

[root@localhost mysql]# bin/mysql -u root -p

Enter password:

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

分析:是/tmp/mysql.sock 不存在

# cd /var/lib/mysql/

由于mysql 默认的mysql.sock 是在/var/lib/mysql/mysql.sock,创建符号连接:

# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

# bin/mysql -u root

Welcome to the MySQL monitor. Commands end with or g.

Your MySQL connection id is 1

Server version: 5.0.45 MySQL Community Server (GPL)

Type 'help' or 'h' for help. Type 'c' to clear the buffer.

mysql>

修改root 密码

#cd /usr/local/mysql/

#bin/mysqladmin -u root -p password yourpassword


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5904742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-07
下一篇 2023-03-07

发表评论

登录后才能评论

评论列表(0条)

保存