mysql常见错误及解决方案


常常见见错错误误及及解解决决方方案案 MySQL 问题 1:使用 MySQL Command Line Client,出现闪一下然后窗口就消 失的情况,如何解决? 第一次使用 MySQL Command Line Client,有可能会出现闪一下,然后窗口就消失的情况。下面就来讲述 如何处理这种情况。具体操作步骤如下。 依次选择【开始】|【所有程序】|【MySQL】|【MySQL Server 5.6】|【MySQL 5.6 Command Line Client】 菜单命令并右击,在弹出的菜单中选择【属性】菜单命令,如下图所示。 在打开对话框中复制【目标】文本框中内容。如下图所示。 提示:复制的内容如下。其中 my.ini 文件的是不存在的,所以弹出的窗口会闪一下就消失了。 "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql.exe" "--defaults-file=C:\Program Files\MySQL\MySQL Server 5.6\my.ini" "-uroot" "-p" 01 02 打开路径 C:\Program Files\MySQL\MySQL Server 5.6,在打开的窗口中发现没有文件 my.ini,如下图 所示。 复制文件 my-default.ini,然后将副本命名为 my.ini 即可。如下图所示。 完成上面的操作后,即可解决窗口闪一下就消失的问题。 问题 2:无法打开 MySQL 5.6 软件安装包,提示对话框如下图所示, 如何解决? 在安装 MySQL 5.6 软件安装包之前,用户需要确保系统中已经安装了.Net Framework 3.5 和.Net Framework 4.0,如果缺少这两个软件,将不能正常地安装 MySQL 5.6 软件。另外还要确保的 WindowsInstaller 正常安装。 03 04 问题 3:MySQL 安装失败如何解决? 安装过程失败,多是由于重新安装 MySQL 的缘故,因为 MySQL 在删除的时候,不能自动删除相关的信息。 解决方法是,把以前安装的目录删除掉。删除在 C 盘的 program file 文件夹里面 mysql 的安装目录文件夹;同时 删除 MySQL 的 DATA 目录,该目录一般为隐藏文件,其位置一般在“ C:\Documents and Settings\All Users\Application Data\ MySQL”目录下,删除掉后重新安装即可。 问题 4:创建子表时,就会出现错误“ERROR 1005 (HY000): Can't create table 'database.tablename'(errno: 150)”,如何解决? 关联指的是在关系型数据库中,相关表之间的联系。它是通过相容或相同的属性或属性组来表示的。子表 的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型不一样,则创建子表时,就会出现错 误“ERROR 1005 (HY000): Can't create table 'database.tablename'(errno: 150)”。 ERROR 1217 (23000): Cannot delete or update a parent row: a foreign key constraint fails 问题 5:删除主表是报错,如何解决? 如果存在外键约束时,主表不能被直接删除。接下来,解除关联子表 tb_emp 的外键约束。语句成功执行后, 将取消子表和父表之间的关联关系,此时,可以输入删除语句,将原来的父表删除 问题 6:数据库还原的时候没反应,如何解决? 如果不能够正常还原的话,可以选择【Edit】|【Preferences】菜单命令。选择【Administrator】选项, 可以使用默认的 mysql 的路径(保留空白的 Workbench 将会使用默认的版本)。设置如下图所示。 问题 7:MySQL Workbench 5.2 CE 不能正常安装,怎么解决? 某些用户使用的操作系统是 Window XP SP1,安装 MySQL Workbench 5.2 CE 之前需要安装.NET Framework 4 Client Profile 和 Window XP with SP3,详细步骤请参考 17.1.3 章节内容。 问题 8: Win7 用户安装好 MySQL Workbench 5.2 CE 后不能运行,怎 么解决? 某些 Win7 的用户,不能够正常运行 MySQL Workbench 5.2 CE 程序,此时需要安装两个插件,安 装.netframework4 和 vcredist_x86.exe 即可。 问题 9:Windows 环境下无法开启 binlog 怎么办? 有些读者反映 MySQL5.6 数据库执行 show variables like 'log_bin';语句后不管怎么设置查询的值一直是 OFF 状态。假设用户安装好后的路径是在 D:/Program Files/MySQL/MySQL Server 5.6 下面,我们将 my-default.ini 文件改成 my.ini 文件后,不管怎么改,环境变量都不能生效。此时,读者朋友们可以执行 show variables like 'datadir';命令,安装好之后真正生效的 my.ini 文件不在 D:/Program Files/MySQL/MySQL Server 5.6 下面,show variables like 'datadir';命令展现的才是真正的配置文件的路径。 问题 10:如果主机和从机 server-id 一样如何解决? 通常情况下,Master 主机和 Slave 主机的 server-id 是不会一样的,如果一样的话,往往会发生 Last_IO_Error:Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids;出 现这种情况,用户可以使用如下命令来查看服务器的 server-id,然后手动的进行修改。如下所示。 mysql> show variables like 'server_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id | 1 | +---------------+-------+ 1 row in set (0.00 sec) mysql> set global server_id = 2; Query OK, 0 rows affected (0.16 sec) 修改完成后,执行 slave start 命令,查询 slave 主机的状态,查看问题是否解决。 问题 11:在 Slave 主机执行 change master 命令的时候报错,如何解决? 当用户在 Slave 从机 MySQL 环境执行 change master to 命令的时候,发生如下的错误。 mysql> change master to master_host=‘IP', master_user='USER', master_password='PASSWD', master_log_file='mysql-bin.000001',master_log_pos=106; ERROR 1198 (HY000): This operation cannot be performed with a running slave; run STOP SLAVE first 从错误提示可以看出,原因是因为 slave 已经关闭了,此时需要执行 start slave 命令开启 Slave 功能。 问题 12:从机状态显示 Last_IO_Error 错误代码为 2013 的原因? 有时候读者有可能遇到这样的情况,在执行 show slave status \G;命令中 Slave_IO_Running 和 Slave_SQL_Running 的值都是 YES,但是 Last_IO_Error 发生 2013 的错误代码。 发生这种问题的主要原因是网络问题,首先读者需要检查下 Master 主机创建的用是不是有授予远程连 接的权限。这里举个例子,命令执行如下所示。 mysql> grant replication slave on *.* to 'repl'@'%' identified by '123'; Query OK, 0 rows affected (0.55 sec) 这里的%表示任何远程的 repl 用户都可以访问 master 主机,另外还需要查看是否有防火墙设置和网络 的其他故障。 问题 13:MySQL 复制不同步,如何解决? MySQL Replication(复制)是采用 binlog 进行网络传输,所以网络延迟是产生 MySQL 主从不同步 的主要原因,通常会给我们的程序进行读写分离带来一定的困惑。 为了避免这种情况,在配置服务器配置文件的时候推荐使用 InnoDB 存储引擎的表,在主机上可以开 始 sync_binlog。 如果 Master 主机上的 max_allowed_packet 比较大,但是从机上没有配置该值的话,该参数默认的值为 1M,此时很有可能导致同步失败,建议主从两台机器上都设为 5M 比较合适。 问题 14:MySQL Cluster 和 MySQL Replication 的区别? MySQL Replication 是一个异步的复制过程,Master 主机必须打开 binlog 文件,然后会向 Slave 主机复 制二进制日志文件,复制的过程由 Master 端的一个 IO 线程、Slave 端的线程和一个 SQL 线程完成的。 MySQL Cluster 跟 MySQL Replication 不同在于采用分布式同步的,所有机器上的数据是一致的,同步 进行数据提交。 问题 15:配置完成后显示不了各节点的状态,如何解决? 如果各个节点已经配置完成,但是在管理节点下执行如下的命令却看不到各节点的状态,应该考虑有 可能是网络防火墙的问题,在 Fedora 操作系统下面可以执行 service iptables stop 命令将防火墙关闭,然后 在管理节点 ndb_mgm>提示符下面输入 shutdown 关闭管理节点,之后输入 exit 退出即可。 ndb_mgm> show Connected to Management Server at: localhost:1186 Cluster Configuration --------------------- [ndbd(NDB)] 2 node(s) id=2 @192.168.0.101 (mysql-5.5.27 ndb-7.2.8, starting, Nodegroup: 0) id=3 @192.168.0.102 (mysql-5.5.27 ndb-7.2.8, starting, Nodegroup: 0) [ndb_mgmd(MGM)] 1 node(s) id=1 @192.168.0.100 (mysql-5.5.27 ndb-7.2.8) [mysqld(API)] 2 node(s) id=4 @192.168.0.101 (mysql-5.5.27 ndb-7.2.8) id=5 @192.168.0.102 (mysql-5.5.27 ndb-7.2.8) 问题 16:插入数据报’Node failure caused abort of transaction’的错,如 何解决? 在插入数据的时候,可能报错误代码为 1297 的错误,ERROR 1297 (HY000): Got temporary error 4010 'Node failure caused abort of transaction' from NDBCLUSTER,然后数据节点强制关闭,此时可以考 虑加大 MaxNoOfConcurrentTransactions 和 MaxNoOfConcurrentOperations 参数的值。 问题 17:导入数据的时候遇到如下报错误代码为 1005 的错误? 如果导入数据的时候发生错误代码为1005的错误,ERROR 1005 (HY000) at line 25: Can't create table 'tuge.pangolin_fnc_accountverification' (errno: 140) Error | 1296 | Got error 738 'Record too big' from NDB ,此 时可以考虑修改表结构,单行数据要求小于8KB。 问题 18:SQL 节点始终无法加入? 如果在管理节点查询MySQL Cluster的状态,SQL节点始终加入的话,可以考虑数据节点的2202端口是 否被屏蔽了,另外在启动MySQL服务的时候使用mysqld_safe &命令在启动MySQL服务。 问题 19:修改 php.ini 文件后仍然不能调用 MySQL 数据库怎么办? 有时候修改 php.ini 文件不能保证一定可以加载 MySQL 函数库。此时如果使用 phpinfo()函数不能显 示 mysql 的信息,说明配置失败了。重新按照 19.2 小结的内容检查配置是否正确,如果正确,则把 PHP 安装目录下的 libmysql.dll 库文件直接复制,然后拷贝到系统的 system32 目录下,然后重新启动 IIS 或 APACHE,最好再次使用 phpinfo()进行验证,即可看到 mysql 信息,表示此时已经配置成功。 问题 20:为什么尽量省略 MySQL 语句中的分号? 在 MySQL 语句中,每一行的命令都是用分号(;)作为结束,但是,当一行 MySQL 被插入在 PHP 代码 中时,最好把后面的分号省略掉。这主要是因为 PHP 也是以分号作为一行的结束的,额外的分号有时会让 PHP 的语法分析器搞不明白,所以还是省略掉的好。在这种情况下,虽然省略了分号,但是 PHP 在执行 MySQL 命令时会自动加上的。 另外还有一个不要加分号的情况。当用户想把字段竖者排列显示下来,而不是像通常的那样横着排列 时,可以用 G 来结束一行 SQ 语句,这时就用不上分号了,例如: SELECT * FROM paper WHERE USER_ID =1G 问题 21:为什么使用通配符格式正确,却没有查找出符合条件的记 录? MySQL 中存储字符串数据时,可能会不小心把两端带有空格的字符串保存到记录中,而在查看表中记录时, MySQL 不能明确的显示空格,数据库操作者不能直观的确定字符串两端是否有空格。例如,使用 LIKE ‘%e’匹 配以字母 e 结尾的水果的名称,如果字母 e 后面多了一个空格,则 LIKE 语句不能将该记录查找出来。解决的方 法是使用 TRIM 函数,将字符串两端的空格删除之后再进行匹配。 问题 22:插入记录时可以不指定字段名称吗? 不管使用哪种 INSERT 语法,都必须给出 VALUES 的正确数目。如果不提供字段名,则必须给每个字段提 供一个值,否则将产生一条错误消息。如果要在 INSERT 操作中省略某些字段,这些字段需要满足一定条件: 该列定义为允许空值;或者表定义时给出默认值,如果不给出值,将使用默认值。 问题 23:已经将一个账户的信息从数据库中完全删除,该用户还能登 录数据库,如何解决? 出现这种情况的原因可能有多种,最有可能的是在 user 数据表中存在匿名账户。在 user 表中匿名账户的 User 字段值为空字符串,这会允许任何人连接到数据库,检测是否存在匿名登录用户的方法是,输入以下语句: SELECT * FROM user WHERE User=’’; 如果有记录返回,则说明存在匿名用户,需要删除该记录,以保证数据库的访问安全,删除语句为: DELETE FROM user WHERE user=’’; 这样一来,该账户肯定不能登录 MySQL 服务器了。 问题 24: 使用 mysqldump 备份整个数据库成功,把表和数据库都删 除了,但使用备份文件却不能恢复数据库,如何解决? 出现这种情况,是因为备份的时候没有指定--databases 参数。默认情况下,如果只指定数据库名称, mysqldump 备份的是数据库中所有的表,而不包括数据库的创建语句,例如: mysqldump -u root -p booksDB > c:\backup\booksDB_20110101.sql 该语句只备份了 booksDB 数据库下所有的表,读者打开该文件,可以看到文件中不包含创建 booksDB 数据 库的 CREATE DATABASE 语句,因此如果把 booksDB 也删除了,使用该 sql 文件不能还原以前的表,还原时 会出现 ERROR 1046 (3D000): No database selected 的错误信息。必须在 MySQL 命令行下创建 booksDB 数据库, 并使用 use 语句选择 booksDB 之后才可以还原。而下面的语句,数据库删除之后,可以正常还原备份时的状态。 mysqldump -u root -p --databases booksDB > C:\backup\books_DB_20110101.sql 该语句不仅备份了所有数据库下的表结构,而且包括创建数据库的语句。 问题 25:查询语句中的索引没有起作用,怎么回事? 在一些情况下,查询语句中使用了带有索引的字段。但索引并没有起作用。例如,在 WHERE 条件的 LIKE 关键字匹配的字符串以“%”开头,这种情况下索引不会起作用。又如,WHERE 条件中使用 OR 关键字连接查 询条件,如果有 1 个字段没有使用索引,那么其他的索引也不会起作用。如果使用多列索引,但没有使用多列 索引中的第 1 个字段,那么多列索引也不会起作用。
还剩6页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

zhxw1988

贡献于2017-04-04

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf