oracle数据库移植到mysql数据库遇到的问题【资料整理】

来源:互联网 发布:淘宝美工外包价格 编辑:程序博客网 时间:2024/05/16 11:50

一、中文插入乱码(?)的解决

 首先设置mysql的默认编码,默认如下:

mysql> show variables like 'character/_set/_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | latin1 |
| character_set_connection | latin1 |
| character_set_database   | latin1 |
| character_set_filesystem | binary |
| character_set_results    | latin1 |
| character_set_server     | latin1 |
| character_set_system     | utf8   |
+--------------------------+--------+

 

可以在安装的时候统一设置为utf8,或者在安装完成后进行修改

1、windows下:修改my.ini文件,有两处default-character-set=latin1都改为default-character-set=utf8重启既可。
2、linux下:vi /etc/my.cnf(# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 既已经把my-medium.cnf拷贝到/etc/下了)在[mysqld]下加入default-character-set = utf8,[client]下加入default-character-set = utf8
:wq保存退出
也可直接在mysql>输入
mysql> SET character_set_client = x;
mysql> SET character_set_results = x;
mysql> SET character_set_connection = x;

x为要设置的字符集,如utf8
# show variables like '%char%';# show variables like '%collation_%';

(不知道为什么在Linux下如此“SET character_set_client = x;”修改不能保存,每次改完退出后又回到默认编码)

 

修改完成后可查看:

mysql> show variables like 'character/_set/_%';
+--------------------------+--------+
| Variable_name            | Value  |
+--------------------------+--------+
| character_set_client     | utf8   |
| character_set_connection | utf8   |
| character_set_database   | utf8   |
| character_set_filesystem | utf8   |
| character_set_results    | utf8   |
| character_set_server     | utf8   |
| character_set_system     | utf8   |
+--------------------------+--------+



二、导入数据时insert语句中只要含有汉字数据就出现“data too long for column”错误

    在windows的DOS窗口下运行mysql命令,insert语句中只要含有汉字数据就出现“data too long for column”错误 。而直接用Navicat/MYSQL-Front/SQLyog这样的GUI程序执行同样的sql就没有问题。

    这个问题依旧是编码造成的问题,前面已经将mysql的编码格式设置为utf8,现在直接将脚本从记事本拷贝到DOS下用mysql命令窗体下去执行就会报错。因为中文windows下编码默认都是gbk,所以我们从来没遇到过这样的乱码问题。(在dos窗口左上角右键-->属性,当前代码页: 936 (ANSI/OEM - 简体中文 GBK ))验证DOS窗口是GBK编码发送字符。所以用Windows下的GBK中文发到mysql下的utf8中文去执行的时候,报错就不奇怪了。

     根据上面的分析,要解决这样的问题有这么几个方法,

      1、那就直接用GUI程序执行sql;

      2、要么用记事本或UltraEdit等文本编辑器将脚本文件的编码转化为utf8后在执行;

      3、要么在调用mysql的时候加上--default-character-set=gbk 的参数。即 使用 mysql -uroot -p --default-character-set=gbk 登录即可。 注意,不要因为你的数据库是utf8编码就使用mysql -uroot -p --default-character-set=utf8去登录。我们这里说的是dos中发出的指令字符串的编码,dos窗口是不会用utf8编码去发送指令的。

 

三、日期类型保存时丢失“时分秒”

    在oracle数据库下使用的DATE类型在mysql数据库中DATE类型不一致。sql脚本是用工具生成的,直接将oracle下的Date 生成mysql下的DATE类型,造成在mysql环境下保存的时间类型是“yyyy-MM-dd”,将生成的mysql脚本里面的DATE修改为timestamp类型(“yyyy-MM-dd HH:mm:ss:FF(6)”)。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------

---------------------附------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------

常用的mysql命令:

1、连接到MYSQL mysql -h主机地址 -u用户名 -p用户密码

       C:/>mysql -u root -p
       Enter password: ********
       Welcome to the MySQL monitor.  Commands end with ; or /g.
       Your MySQL connection id is 75 to server version: 5.0.18-nt

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

       mysql>

2、找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;

3、创建一个数据库MYSQLDATA : mysql> CREATE DATABASE MYSQLDATA;

4、选择你所创建的数据库 :mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!) 

5、查看现在的数据库中存在什么表 :mysql> SHOW TABLES;

6、创建一个数据库表 :mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1)); 

7、显示表的结构:   mysql> DESCRIBE MYTABLE; 

8、往表中加入记录 : mysql> insert into MYTABLE values ("hyq","M"); 

9、用文本方式将数据装入数据库表中(例如D:/mysql.txt) :mysql> LOAD DATA LOCAL INFILE "D:/mysql.txt" INTO TABLE MYTABLE;

10、导入.sql文件命令(例如D:/mysql.sql)
        mysql> use database;
        mysql> source d:/mysql.sql; 

11、删除表 : mysql> drop TABLE MYTABLE;

12、清空表 :mysql> delete from MYTABLE;

13、更新表中数据 :  mysql> update MYTABLE set sex="f" where name=hyq; 

 

 

 

此外,Linux下经常使用的命令:


1:导入数据库备份文件的方法:
  root: mysql –u数据库帐户 –p密码 数据库名 < .sql备份文件
2:MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下:
  mysql> grant all privileges on 数据库名.* to 用户名@localhost  identified by “密码”;identified by “密码”;
3:清空文件内容:
  cat /dev/null > 文件名
4:添加帐户:
  useradd 用户名 –d 目录名 –s /sbin/nologin(不允许该用户直接登录服务器)
5:设置帐户密码
  passwd 用户名
特别注意:
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、 root帐户设置密码,可用如下命令进行:
use mysql;
delete from User where User="";
update User set Password=PASSWORD(newpassword) where User=root; 



原创粉丝点击