【问题标题】:Errors while migrating from MS SQL 2000 to MySQL 5.1从 MS SQL 2000 迁移到 MySQL 5.1 时出错
【发布时间】:2011-07-22 22:08:14
【问题描述】:

我正在使用迁移工具包进行迁移,但在迁移过程中出现这些错误

  1. 不正确的表定义;在 DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列
  2. 不正确的字符串值:第 5 行的列“MESSAGE”的“\xEF\xBF\xBDs d...” 0 行已转移。

为了解决第一个错误,我在这里得到了一些东西http://terrencemiao.com/Webmail/msg00949.html

但我没有得到第二个错误它是什么,为什么它在那里如何修复它也建议我一些更好的想法来修复第一个错误,如果除了链接中提到的之外还有任何其他问题

    USE `MyDB`
Creating tables ...

Creating table MyTable...
DROP TABLE IF EXISTS `MyTable`
Creating table MyTable ...
SET NAMES UTF8;

CREATE TABLE `MyTable` (
  `PrimaryKey` INT(10) NOT NULL AUTO_INCREMENT,
  `FK_QUESTION_ID` INT(10) NOT NULL,
  `ANSWER` LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL
  PRIMARY KEY (`PK_ID`)
)
ENGINE = INNODB

答案栏出现错误

【问题讨论】:

  • 显示该错误的代码行。
  • 我已经更新了这个问题,请你看看并告诉我我已经尝试过 'SET NAMES UTF8;',但仍然遇到同样的错误

标签: mysql sql-server database-migration


【解决方案1】:

*不正确的表定义;在 DEFAULT 或 ON UPDATE 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列* 没错,您不应该创建多个这样的字段。

不正确的字符串值:'\xEF\xBF\xBDs d...' 用于第 5 行的列 'MESSAGE' 已传输 0 行。 可能的编码错误,尝试运行 'SET NAMES UTF8;'插入数据之前


试试这个说法,

CREATE TABLE `MyTable` (
  PK_ID INT(11) NOT NULL AUTO_INCREMENT,
  FK_QUESTION_ID INT(11) NOT NULL,
  ANSWER LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL,
  PRIMARY KEY (`PK_ID`)
)
ENGINE = INNODB;

您错过了一个逗号,它是错误的字段名称。小心迁移工具包。检查生成的字段类型,例如,如果您不需要 4GB 文本值,则可以使用简单的 VARCHAR 代替 LONGTEXT。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-04
    • 2010-09-18
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2011-09-25
    相关资源
    最近更新 更多