0

移行に移行ツールキットを使用していますが、移行の過程でこれらのエラーが発生します

  1. テーブル定義が正しくありません。DEFAULT または ON UPDATE 句で CURRENT_TIMESTAMP を持つ TIMESTAMP 列は 1 つだけ存在できます
  2. 不正な文字列値: 行 5 の列 'MESSAGE' の '\xEF\xBF\xBDs d...' 0 行が転送されました。

最初のエラーを修正するために、ここで何かを得ましたhttp://terrencemiao.com/Webmail/msg00949.html

しかし、私は2番目のエラーを取得していません。なぜそれを修正する方法があるのですか?また、リンクに記載されているものとは別に、最初のエラーを修正するためのより良いアイデアを提案します

    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

回答欄にエラーが出ます

4

1 に答える 1

2

*テーブル定義が正しくありません。DEFAULT または ON UPDATE 句で CURRENT_TIMESTAMP を持つ TIMESTAMP 列は 1 つしか存在できません* これは正しく、そのようなフィールドを複数作成しないでください。

不正な文字列値: 行 5 の列 'MESSAGE' の '\xEF\xBF\xBDs d...' 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;

コンマが抜けていて、フィールド名が間違っていました。移行ツールキットには注意してください。生成されたフィールド タイプを確認します。たとえば、4 GB のテキスト値が必要ない場合は、LONGTEXT の代わりに単純な VARCHAR を使用できます。

于 2011-03-25T13:24:59.033 に答える