分类 "Sql-Mysql" 的存档.

mysql-ERROR 1066: Not unique table/alias:

在调用如下mysql语句时:

insert into Question(CalleeNo,QNo,ANo,Filename) select 12590,QNo,ANo,Filename from Question  where CalleeNo='12590';

提示

ERROR 1066: Not unique table/alias: Question

出现该错误,是由于在该mysql语句中使用同一个表用了两次,导致前后发生歧义,解决办法就是给其中一个表或者两个表 起一个别名即可,
如下语句可以解决该问题:

insert into Question(CalleeNo,QNo,ANo,Filename) select 12590,QNo,ANo,Filename from Question b where b.CalleeNo='12590';

Read more…

mysql-ERROR 1093: INSERT TABLE is not allowed in FROM table list

ERROR 1093: INSERT TABLE is not allowed in FROM table list  

出现此原因是由于mysql版本过低,在同一条语句中不支持insert 和 select 同时操作同一张表。在mysql5.0版本之后解决了此问题,可以同时操作同一张表,但是依然不支持在子查询中同时操作同一张表。
在同一张表中进行select 和 insert 操作时,mysql会产生一张临时表,先查询出结果到临时表,然后再插入表本身。当insert 和 select 操作的是同一个临时表时,同样会报mysql-ERROR 1093 INSERT TABLE is not allowed in FROM table list 错误,因为在这种情况下,临时表不能被引用两次。
Read more…

Ubuntu php apache mysql 环境配置 apt-get

安装 Apache2:

sudo apt-get install apache2

安装PHP模块:

sudo apt-get install php5

编辑测试页:
sudo vim/var/www/index.php

如果提示还没有安装vim,可以用以下bash安装

sudo apt-get install vim

Read more…

如何让 mysqldump/mysql 导入数据时忽略错误继续执行

今天从excel导入数据到服务器的mysql,在本地把excel的内容拷贝到了Editplus,然后用正则把它变成了insert into 语句,在用mysql -uroot -p123456 databasename < filename.sql 导入的时候,被告知 ERROR 1062 (23000) at line 258: Duplicate entry (‘xx’,xx,xx,x,xxx) for key 2,违背了Unique Key,但是这种情况应该是正常的,重复键不插入,继续执行就好啦,可是它却报错并停止执行了。。

Read more…

mysql kill process解决死锁问题,停用某条正在执行的语句.

在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query即可。

使用:

show processlist;

显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.
运行

kill id;

杀掉即可。
Read more…

mysql-select into-not in()-给C#转型来的PHP程序员的一点小提示

搞C#、.NET的,大都用的mssql数据库,但是在mysql里边,有一些mssql的用法是不适用的,以下是我今天刚经历的两个例子,共大家参考。

1、SELECT INTO TABLE

在mssql中, 有如下用法,可以直接把查询出的数据放到一个新表中,这条语句可以很好的用来备份表。

select * into table1_bak from table1

2、not in()
在mssql中, not in () 的括弧内可以直接放置sql语句,也可以很方便的实现特殊查询。

select * from bill_log where bill_id not in(select bill_id from bill_log07)

这条语句在mysql中就会报错。
Read more…

mysql批量删除表,相同前缀的表

mysql中没有现有的工具可以直接实现,所以原理就是使用现有的功能实现drop table 的语句的自动拼写,从而达到简化目的。
下边举例说明,如果想删除”wp_”开头的表:

Select CONCAT( 'drop table ', table_name, ';' ) 
FROM information_schema.tables 
Where table_name LIKE 'wp_%';

这样就会出现drop table wp_xxxx 的所有语句,复制下来,简单修改一下,直接粘贴到命令行中运行就可以啦~~
Read more…

解决MYSQL数据从高版本导入低版本的问题–mysqldump

首先,在目标机器上,使用status查看mysql的版本。

然后,在导出数据的机器上,使用mysqldump导出数据时,加上如下参数

–compatible=mysql323

mysql323是版本的名字。

这样,导出的数据就可以在低版本的mysql上使用mysqldump导入了。

Read more…

Mysql 命令行导入 乱码 解决方法

mysql命令行从文件导入时发生乱码,是因为编码问题,即使改变sql文件的编码,重新导入时,仍旧是乱码,针对此问题,我们在导入时,在命令行中指定编码即可。

如下:

mysql -uroot -p123 management <D:dump.sql -f --default-character-set=utf8

PHP开发人员常犯的几个MysqL错误

对于大多数web应用来说,数据库都是一个十分基础性的部分。如果你在使用PHP,那么你很可能也在使用MySQL—LAMP系列中举足轻重的一员。

对于很多新手们来说,使用PHP可以在短短几个小时之内轻松地写出具有特定功能的代码。但是,构建一个稳定可靠的数据库却需要花上一些时日和相关技能。下面列举了我曾经犯过的最严重的10个MySQL相关的错误(有些同样也反映在其他语言/数据库的使用上)。

1、使用MyISAM而不是InnoDB

MySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。

MySQL 默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性 是非常重要的,但MyISAM都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用量增加的时候这会产生非常差的运行效率。

结论很简单:使用InnoDB。

Read more…