如何实战解决mysql#1366错误

  mysql#1366错误是在mysql5.0.2以上版本才出现的,不管是编码还是字段不符合规则,就通不过mysql严格的数据检查,#1366错误就是这样出现的。当然如果你有修改my.ini的权限,通常#1366是很好解决掉的。只要把my.ini里的sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"这句话修改成sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"就可以了。虚拟主机通常没有这种修改权限,如果是编码问题导致的#1366错误,那么请看我下面的介绍吧。或许对你有些帮助。

  本人用XOOPS架的网站(www.visteel.com)已经搬过几次家了,由于每次搬家都没有做好数据库的编码整理,随着数据表的增多,gb2312、gbk、utf8、latin1等字符整理方式都混在了一起。而虚拟主机的mysql版本已经是5.1.36了,终于在做数据更新的时候,让人头疼的#1366错误出现了。好,还是说解决的办法吧。首先我网站数据库是gbk的,那么就把里面的全部数据表重新整理一下吧。

  可是已经存储了数据的表个别是不能再简单通过phpmyadmin等管理工具处理的了。这个时候你需要两个工具,一个是mysqlodbc下载并按装mysql-connector-odbc-5.1.8-win32一个是navicatformysql。

  第一步:控制面板->管理工具->数据源。在本地Windows下建立个mysqlODBC数据源,假设命名成visteel

  第二步:打开NavicatforMySQL,单击“Connection”按钮设置连接。

  第三步:连接上数据库服务器后右键单击数据库服务器选择“NewDatabase…”新建一个数据库。记得“Characterset”选定gbk;

  第四步:选中要转换的表,将它们拖到新进的数据库中,在弹出的选项窗中选择“Copyhere(Structureonly)”,将数据表的结构复制到新数据库中;

  第五步:在新建的数据库中选中刚导过来的所有的表,右键选择“DumpSQLFile”导出成sql文件;

  第六步:用文本编辑器打开刚导出的sql文件,将里面的DEFAULTCHARSET=后面不论是什么,全部替换成DEFAULTCHARSET=gbk,保存修改过的sql文件。

  第七步:全选新建的数据库中的所有表,单击“DeleteTable”删除。然后右键单击新建的数据库选择“ExecuteSqlFile…”,找到并双击改过的sql文件,将改过的sql文件重新导回数据库中。

  第八步:选中新建的数据库然后再点击:“ImportWizard”按钮。选择ODBC,点下一步。

  第九步:点“ImportFrom:”右边的“…”按钮,然后在“数据连接”属性窗口选择“连接”这一页,在“1、指定数据源”中选择在第一步中建立的数据源“visteel”;确定后返回“step2of8”窗口,选中需要转换的表,或者点击“selectall”按钮选择整个数据库的所有的表。连续点击三次“next”按钮后来到“Step7of8”对话框。

  第十步:选择“Copy:deleteallrecordsindestination,repopulatefromthesource”:再单击”next”来到“step8of8”对话框。

  第十一步:单击按钮“start”开始转换,直到出现信息“[Msg][lmp]Finished-Successfully”。

  到此,数据库完美完成了GBK的整理。编辑XOOPS根目录下的mainfile.php文件,将define('XOOPS_DB_CHARSET','gb2312')修改成define('XOOPS_DB_CHARSET','gbk');

  将本地数据库导出上传到虚拟主机进行测试,至此,mysql#1366错误全部消失掉了。而且生僻汉字也不再是用??显示了。

  Admin5首发,转载请注明文章来源www.visteel.com

时间: 2024-08-22 15:19:54

如何实战解决mysql#1366错误的相关文章

MySQL启动错误怎么解决 MySQL启动错误解决方法

一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下. 有同学会说,哥们儿你是不是buffer pool设置太大了,设置了96G内存.这明显提示无法分配内存嘛.如果真是这样也就不在这里进行分享了,哈哈. 我的服务器内存是128G.如下图: 服务器内存使用情况: 那么问题来了,既然还剩如此多的内存,为什么提示无法分配内存? 1. 首先想到会不会是有几条内存坏了?于是运维的同学进行了检查,给我的反馈是硬件一切正常

解决mysql 1040错误Too many connections的方法_Mysql

从官方文档知道linux上面编译安装的mysql默认的连接为100个,这样对于网站的需求来说是远远不够的. mysql官方告诉我们需要修改max_connections的值,那么我们怎么去修改呢?有两种方法 1.修改配置文件文件 修改/etc/my.cnf这个文件,在[mysqld]中新增max_connections=N,如果你没有这个文件请从编译源码中的support-files文件夹中复制你所需要的*.cnf文件为到/etc/my.cnf.我使用的是my-medium.cnf,中型服务器配

MySQL启动错误解决方法_Mysql

一般情况下mysql的启动错误还是很容易排查的,但是今天我们就来说一下不一般的情况.拿到一台服务器,安装完mysql后进行启动,启动错误如下: 有同学会说,哥们儿你是不是buffer pool设置太大了,设置了96G内存.这明显提示无法分配内存嘛.如果真是这样也就不在这里进行分享了,哈哈. 我的服务器内存是128G.如下图: 服务器内存使用情况: 那么问题来了,既然还剩如此多的内存,为什么提示无法分配内存??.各位童鞋怎么看? 1. 首先想到会不会是有几条内存坏了?于是运维的同学进行了检查,给我

php 解决MySQL插入数据出现 Incorrect string value: '\xF0\x9F\x92\x8BTi...'错误

在项目中向MySQL插入数据时,发现数据插入不完整,通过调试,发现插入语句也没什么特殊的错误.但是就是差不进去,于是就打开mysqli错误的调试 $ret = mysqli_query($this->conn, $sql) or die(mysqli_error($this->conn)); 结果弹出如下错误信息: Incorrect string value: '\xF0\x9F\x92\x8BTi...' 有错误信息就好办了,结果上网一查结果是:mysql编码格式utf-8格式,不支持带四

解决mysql使用GTID主从复制错误问题

解决mysql使用GTID主从复制错误问题 做MySQL主从的话肯定会遇到很多同步上的问题, 大多数都是由于机器宕机,重启,或者是主键冲突等引起的从服务器停止工作, 这里专门收集类似问题并提供整理解决方案,仅供参考! 1.主从网络中断,或主服务器重启,或从服务器重启,从会根据配置文件中的时间(默认1分钟)去自动重连主服务器,直到网络和服务均可正常连接,连接正常后可自动继续同步之前文件,不需要任何人工干预! 2.当主从因为人为原因出现不同步的时候,可以用下面命令进行同步:  代码如下 复制代码 L

怎样解决mysql连接过多的错误

问:怎样解决mysql连接过多的错误? 答:系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是可以设置的.如果不设置,默认是100.最大是16384. 2.数据库当前的连接线程数threads_connected.这是动态变化的. 查看max_connections.max_connections的办法见后. 如果 threads_connected == max_connections 时,数据库系统就不能提供更多的连接数了,这时

mysql 1046错误解决实例

MySQL 1046错误解决: <?PHP require_once './include/common.inc.php'; $maxpostnum = 200; //设定最小帖子数量 if(!$discuz_user || !$discuz_pw) { showmessage('对不起,您还没有登录,无法进行此操作.'); } if(!$adminid ){ $query=$db->query("SELECT postnum,credit FROM bbs.cdb_members

解决Mysql错误:Can't create/write to file 'C:\WINDOWS\TEMP\#sql_1344_0.MYD' (Errcode: 17)

解决Mysql错误:Can't create/write to file 'C:\WINDOWS\TEMP\#sql_1344_0.MYD' (Errcode: 17)的问题,我所使用的系统是Windows Server http://www.aliyun.com/zixun/aggregation/19058.html">2003 SP2+php 5.2.2+mysql5.0.22+McAfee杀毒软件,当访问用户主页的时候发现mysql出错误,下面来说一下具体的解决方法,风信网 htt

mysql 1040错误提示Too many connections的解决方法

实例 WINDOWS解决MYSQL Errno.: 1040错误 XXXX info: Can not connect to MySQL server User: root Time: 2004-5-20 3:00pm Script: /XXXX/XXXX.php Error: Too many connections Errno.: 1040 An error report has been dispatched to our administrator.  上面错误观点提示 1.可能是mys