翻译:不能连接到 localhost 上的mysql

剖析:这解释“localhost”打算机是存在的,但在这台机器上却没供应MySQL做事。

须要启动这台机器上的MySQL做事,如果机子负载太高没有相应要求也会产生这个缺点。

phpmanager出错总结MySQL常见毛病剖析与解决办法 Bootstrap

办理:既然没有启动那就去启动这台机子的mysql。
如果启动不堪利,多数是由于你的my.ini配置的有问题。
重新配置其即可。

如果以为mysql负载非常,可以到mysql/bin 的目录下实行mysqladmin -uroot -p123 processlist来查看mysql当前的进程。

二、Unknown MySQL Server Host ‘localhosadst’ (11001)

翻译:未知的MySQL做事器 localhosadst

剖析:做事器 localhosasdst 不存在。
或者根本无法连接

办理:仔细检讨自己论坛下面的 ./config.inc.php 找到$dbhost重新设置为精确的mysql 做事器地址。

三、Access denied for user: ‘roota@localhost’ (Using password: YES)

翻译:用户 roota 访问 localhost 被谢绝(没有许可通过)

剖析:造成这个缺点一样平常数据库用户名和密码相对mysql做事器禁绝确

办理:仔细检讨自己论坛下面的 ./config.inc.php 找到$dbuser、$dbpw核实后重新设置保存即可。

四、Access denied for user: ‘red@localhost’ to database ‘newbbs’

翻译:用户 red 在localhost 做事器上没有权限操作数据库newbbs

剖析:这个提示和问题三是不同的。
那个是在连接数据库的时候就被阻挡了,而这个缺点是在对数据库进行操作时引起的。
比如在select update等等。
这个是由于该用户没有操作数据库相应的权力。
比如select 这个操作在mysql.user.Select_priv里记录 Y 可以操作N 不可以操作。

办理:如果是自己的独立主机那么更新mysql.user 的相应用户记录,比如这里要更新的用户为red 。
或者直接修正 ./config.inc.php 为其配置一个具有对数据库操作权限的用户

或者通过如下的命令来更新授权grant all privileges on dbname. to ‘user’@'localhost’ identified by ‘password’

提示:更新了mysql库中的记录一定要重启mysql做事器才能使更新生效

FLUSH PRIVILEGES;

五、No Database Selected

翻译:没有数据库当选择上

剖析:产生的缘故原由有两种

config.inc.php 里面$dbname设置的不对。
致使数据库根本不存在,以是在 $db->select_db($dbname); 时返回了false

和上面问题四是一样的,数据库用户没有select权限,同样会导致这样的缺点。
当你创造config.inc.php的设置没有任何问题,但还是提示这个缺点,那一定便是这种情形了。

办理:对症下药

打开config.inc.php 找到$dbname核实重新配置并保存

同问题四的办理方法

六、Can’t open file: ‘xxx_forums.MYI’. (errno: 145)

翻译:不能打开xxx_forums.MYI

问题剖析:

这种情形是不能打开 cdb_forums.MYI 造成的,引起这种情形可能的缘故原由有:

1、做事器非正常关机,数据库所在空间已满,或一些其它未知的缘故原由,对数据库表造成了破坏。

2、类 unix 操作系统下直接将数据库文件拷贝移动会由于文件的属组问题而产生这个缺点。

办理方法:

1、修复数据表

可以利用下面的两种办法修复数据表:(第一种方法仅适宜独立主机用户)

1)利用 myisamchk ,MySQL 自带了专门用户数据表检讨和修复的工具 —— myisamchk 。
变动当前目录到 MySQL/bin 下面,一样平常情形下只有在这个下面才能运行 myisamchk 命令。
常用的修复命令为:myisamchk -r 数据文件目录/数据表名.MYI;

2)通过 phpMyAdmin 修复, phpMyAdmin 带有修复数据表的功能,进入到某一个表中后,点击“操作”,不才方的“表掩护”中点击“修复表”即可。

把稳:以上两种修复办法在实行前一定要备份数据库。

2、修正文件的属组(仅适宜独立主机用户)

1)复制数据库文件的过程中没有将数据库文件设置为 MySQL 运行的帐号可读写(一样平常适用于 Linux 和 FreeBSD 用户)。

七、Table ‘test.xxx_sessions’ doesn’t exist

翻译:xxxxx表不存在

剖析:在实行sql语句时没有找到表,比如:SELECT FROM xxx_members WHERE uid=’XX’ 这里如果表xxx_members不存在于$dbname库里,那么就会提示这个缺点。
详细可分为以下三种情形来谈论:

安装插件或者hack时修正了程序文件,而忘却了对数据库作相应的升级。

后台利用了不完备备份,导入数据时没有导入到已经安装了相应版本的论坛的数据库中。

办理: 同样对症下药,不同的缘故原由不同的处理方法。

仔细对照插件作者供应的安装解释,把遗漏的对数据库的操作补上,如果仍旧不能办理问题,那么该当疑惑该插件的可用性了。
去咨询一下插件作者,或者将其卸载。

不要张冠李戴,多大的脚就穿多大的鞋。
总之使得程序文件和数据库配套即可.

八、Unknown column ‘column_name’ in ‘field list’

翻译:未知的字段名 column_name

剖析:在实行sql语句是涌现了指定表中没有的字段名称,就会涌现这个缺点。
详细导致的缘故原由可分为以下两种

安装插件或者hack时修正了程序文件,而忘却了对数据库作相应的升级。

程序文件和数据库不配套,比如d2.5的数据库配置给d4.1的程序来用肯定会涌现这个缺点。

办理: 导致的缘故原由和问题八的1和 3是相同的,以是办理方法也一样。

九、You have an error in your SQL syntax

翻译:有一个语法缺点在你的sql中

剖析:论坛标准的程序是没有sql语法缺点的。
以是造成这个缺点的缘故原由一样平常就两类

安装插件或擅自修处死式。

不同的数据库版本数据库导出导入,比如MySQL4.1的数据在导出的语句包含了MySQL4.0没有的功能,像字符集的设定,这时如果将这些sql导入到MySQL4.0的时候就会产生sql语法缺点。

办理:

仔细检讨看到底是哪里的缺点,将其改动,实在弗成就用标准程序把出错的程序更换。

在数据库备份的时候要留神,如果不打算倒入到其他版本的mysql中则不用分外考虑,反之要分外的设定。
利用DZ4.1的后台数据备份,可以按照提示去设定想要的格式。
独立主机的也可以在到处的时候将其导出为mysql4.0的格式。

mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt databse > test.sql

十、Duplicate entry ‘xxx’ for key 1

翻译:插入 xxx 使索引1重复

剖析:索引如果是primary unique这两两种,那么数据表的数据对应的这个字段就必须担保其每条记录的唯一性。
否则就会产生这个缺点。

一样平常发生在对数据库写操作的时候,例如Discuz!4.1论坛程序哀求所有会员的用户名username必须唯一,即username的索引是 unique,这时如果强行往cdb_members表里插入一个已有的username的记录就会发生这个缺点,或者将一条记录的username更新 为已有的一个username。

改变表构造的时候也有可能导致这个缺点。
例如 Discuz!4.0论坛的数据库中cdb_members.username 的索引类型是index这个时候是许可有相同username的记录存在的,在升级到4.1的时候,由于要将username的索引由原来的index变 为unique。
如果这时cdb_members里存在有相同的username的记录,那么就会引发这个缺点。

导出数据据时有时会由于一些缘故原由(作者目前还不清楚)导致同一条记录被重复导出,那么这个备份数据在导入的时候涌现这个缺点是在所难免的了。

修正了auto_increment的值,致使“下一个 Autoindex”为一条已经存在的记录

办理: 两种思路,一是毁坏掉唯一性的索引。
二是把重复的数据记录干掉,只保留一条。
很显然第一种思路是不可取的。
那么按照二的思路我们得出以下几种办理方法,对应上面的i ii iii

按照缺点提示里的信息到数据库中将重复的记录删除,仅保留一条即可。
之后连续实行升级操作。

这种情形发生的概率很小,可以用文本编辑器打开备份文档,查找重复的信息。
将其多余的拿掉,仅保留一条即可。

查询出表中auto_increment最大的一条记录,设置auto_incerment比其大一即可。

PS:repaire table “表名“,可以暂时办理问题。

十一、 Duplicate key name ‘xxx’

翻译:索引名重复

剖析:要创建的索引已经存在了,就会引发这个缺点,这个缺点多发生在升级的时候。
可能是已经升级过的,重复升级引起的缺点。
也有可能是之前用户擅自加的索引,刚好与升级文件中的以是相同了。

办理: 看看已经存在的索引和要添加的索引是否一样,一样的话可以跳过这条sql语句,如果不一样那么先删除已存在的以是,之后再实行。

十二、 Duplicate column name ‘xxx’

翻译:字段名xxx重复

剖析:添加的字段xxx已经存在,多发生在升级过程中,与问题十二的产生是一样的。

办理: 看一下已经存在的字段是否和将要添加的字段属性完备相同,如果相同则可以跳过不实行这句sql,如果不一样则删除掉这个字段。
之后连续实行升级程序。

十三、 Table ‘xxx’ already exists

翻译:数据表xxx已经存在

剖析:xxx表已经存在于库中,再次试图创建这个名字的表就会引发这个缺点。
同样多发生在论坛的升级中。
类似于问题十二。

办理: 看看已经存在的表是否和将要创建的表完备一样,一样的话可以跳过不实行这个sql,否则请将存在的表先删除,之后连续实行升级文件。

十四、 Can’t create database ‘xxx’. Database exists

翻译:不能创建数据库xxx,数据库已经存在

剖析:一个mysql下面的数据库名称必须担保唯一性,否则就会有这个缺点。

办理:把已经存在的数据库改名或者把将要创建的数据库改名,总之不让他们的名称冲突。

十五、 小结(针对问题 11\12\13\14\15)

此类问题缺点提示中都暗藏一个关键词duplicate(重复)

那么对付mysql数据库来说什么东西是不能重复的呢?

数据库 database

同一个数据库下数据表 table

同一个数据表下字段 column

同一个数据表下索引 key

同一个数据表在索引唯一(UNIQUE PRIMARY)的情形下记录中的这些字段不可以重复

十六、Unknown system variable ‘NAMES’

翻译:未知的系统变量NAMES

剖析:Mysql版本不支持字符集设定,此时强行设定字符集就会涌现这个缺点。

办理: 将sql语句中的SET NAMES ‘xxx’ 语句去掉

十七、 Lost connection to MySQL server during query

翻译:MySQL做事器失落去连接在查询期间

剖析:远程连接数据库是有时会有这个问题。
MySQL做事器在实行一条sql语句的时候失落去了连接造成的。

办理: 一样平常不须要怎么去处理,如果频繁地涌现那么考虑改进硬件环境。

十八、User ‘red’ has exceeded the ‘max_updates’ resource (current value: 500)

翻译:msql用户red已经超过了’max_updates’(最大更新次数),’max_questions’(最大查询次数),’max_connections’(最大连接数),当前设定为500

剖析:在mysql数据库的下有一个库为mysql,它个中有一个表为user这里面的记录每一条都对应为一个mysql用户的授权。
个中字段 max_questions max_updates max_connections分别记录着最大查询次数 最大更新数 最大连接数,当目前的任何一个参数大于任何一个设定的值就会产生这个缺点。

办理: 独立主机用户可以直接修正授权表。
修正完之后重启mysql或者更新授权表,进入mysql提示符下实行

FLUSH PRIVILEGES;

记得后面要有分号’;’

虚拟主机的用户如果总是涌现这个问题可找空间商协商办理。

十九、Too many connections (1040)链接过多

翻译:达到最大连接数

问题剖析:

连接数超过了mysql设置的值,与max_connections 和wait_timeout 都有关系。
wait_timeout的值越大,连接的空闲等待就越长,这样就会造成当前连接数越大

办理方法:

1.虚拟主机用户请联系空间商优化 MySQL 做事器的配置;

2.独立主机用户请联系做事器管理员优化 MySQL 做事器的配置,可参考:

修正 MySQL 配置文件 my.ini 或者 my.cnf 中的参数:

max_connections= 1000

wait_timeout = 10

修正后重启 MySQL ,如果常常性地报此缺点,请做一下做事器的整体优化。

二十、There is no such grant defined for user ‘%s’ on host ‘%s’

缺点编号:1141

问题剖析:

MySQL 当前用户无权访问数据库。

办理方法:

1、虚拟主机用户请联系空间商,确认给你供应的帐号是否有授权数据库的权限。

2、独立主机用户请联系做事器管理员,确认给您供应的数据库帐号是否有管理此数据库的权限。

二十一、Error on rename of ‘%s’ to ‘%s’ (errno: %d)

error.:1025

问题剖析:

请检讨一下您的程序是否有修正数据库表名的语句。

办理方法:

1.请检讨您的程序中哪些地方须要修正数据库表名;

2.如果您的实际运用确实须要修正到数据库表名的话,请联系空间商或者做事器管理员给您开放修正库名的权限和做事器本身是否正常。

二十二、Error reading file ‘%s’ (errno: %d)

error.:1023

问题剖析:

数据库文件不能被读取。

办理方法:

1.虚拟主机用户请联系空间商查看数据库是否无缺。

2.独立主机用户请联系做事器管理员检讨一下 MySQL 本身是否正常, MySQL 是否可以读取文件,Linux 用户可以检讨一下 MySQL 的数据库文件的属性是否精确以及本身的文件是否破坏。

二十三、Host ‘’ is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts’

error.:1129

问题剖析:

数据库涌现非常,请重启数据库。

办理方法:

1. 由于存在很多连接缺点,主机’’被屏蔽,虚拟主机用户请联系空间商处理,独立主机用户请联系做事器管理员,在 MySQL 的命令掌握台下实行’mysqladmin flush-hosts’解除屏蔽即可,或者重启 MySQL 数据库

二十四、dropping database (can’t delete ‘%s’, errno: %d)

error.:1009

问题剖析:

不能删除数据库文件,导致删除数据库失落败。

办理方法:

1.检讨您利用的数据库管理帐号是否有权限删除数据。

2.检讨数据库是否存在。

二十五、Got error 28 from table handler

error.:1030

问题剖析:

数据库所在磁盘空间已满。

办理方法:

1.虚拟主机用户请联系空间商增加 MySQL 所在的磁盘空间或者清理一些无用文件;

2.独立主机用户请联系做事器管理员增加 MySQL 所在的磁盘空间或者清理一些无用文件

二十六、Can’t create a new thread; if you are not out of available memory, you can consult the manual for a possible OS-dependent bug。

error.:11/35

问题剖析:

数据库做事器问题,数据库操作无法创建新线程。
一样平常是两个缘故原由:

1.做事器系统内存溢出。

2.环境软件破坏或系统破坏。

办理方法:

1.虚拟主机用户请联系下空间商数据库做事器的内存和系统是否正常。

2.独立主机用户请联系做事器管理员检讨做事器的内存和系统是否正常,如果做事器内存紧张,请检讨一下哪些进程花费了做事器的内存,同时考虑是否增加做事器的内存来提高全体的负载能力。

二十七、Error: Client does not support authentication protocol requested by server; consider upgrading MySQL client

error.:1251

问题剖析:

如果你升级 MySQL 到 4.1 以上版本后碰着以上问题,请先确定你的 MySQL Client 是 4.1 或者更高版本( Windows 下有问题你就直接跳到下面看办理方法了,由于 MySQL 在 Windows 是 client 和 server 一起装上了的)。

办理方法:

1. Windows 平台

紧张是改变连接 MySQL 的帐户的加密办法,MySQL 4.1/5.0 是通过 PASSWORD 这种办法加密的。
可以通过以下两种方法得到办理:

1) mysql->SET PASSWORD FOR ‘some_user’@'some_host’=OLD_PASSWORD(‘new_password’);

2) mysql->UPDATE mysql.user SET Password=OLD_PASSWORD(‘new_password’) WHERE Host=’some_host’ AND User=’some_user’;

2. Linux/Unix 平台

Linux 平台下首先确定是否安装过 MySQL 的客户端,这个用 rpm 安装很大略,Linux 代码为:

rpm -ivh MySQL-client-4.1.15-0.i386.rpm

然后再编译 php 的时候要加上:

–with-mysql=/your/path/to/mysql

一样平常情形下都可以办理。
如果还涌现这种缺点,可以按照下面的方法来做:

mysql->SET PASSWORD FOR ‘some_user’@'some_host’=OLD_PASSWORD(‘new_password’);

mysql->UPDATE mysql.user SET Password=OLD_PASSWORD(‘new_password’) WHERE Host=’some_host’ AND User=’some_user’;

二十八、Error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

error.:2002

问题剖析:

涌现这个缺点一样平常情形下是由于下面两个缘故原由:

1.MySQL 做事器没有开启。

2.MySQL 做事器开启了,但不能找到 socket 文件。

办理方法:

1.虚拟主机用户,请联系空间商确认数据库是否正常启动。

2.独立主机用户,请检讨一下 MySQL 做事是否已经开启,没有开启,请启动 MySQL 做事;如果已经开启,并且是 Linux 系统,请检讨一下 MySQL 的 socket 的路径,然后打开 config.inc.php 找到

$dbhost = ‘localhost’; 在 hostname 后面加冒号‘:’和 MySQL 的 socket 的路径。

比如 MySQL 做事器为 localhost

MySQL 的 socket 的路径为 /tmp/mysql.sock

那么就改成如下:

$dbhost = ‘localhost:/temp/mysql.sock’;