1

MySQL mysqldump ツールを使用して DDL を生成したので、別のマシンで正常なデータベースを作成できました。ターゲット マシンで実行しようとすると、次のエラーが発生します。

スクリプト行: 28 キー列 'friendPrimaryKeyInYour Phone' がテーブルに存在しません

このステートメントの実行:

/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `friend` (
  `id` bigint(20) unsigned NOT NULL,
  `dependentId` bigint(20) unsigned NOT NULL,
  `friendPrimaryKeyInYourPhone` int(10) unsigned NOT NULL,
  `friendNameInYourPhone` varchar(45) NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`id`,`friendPrimaryKeyInYourPhone`) USING BTREE,
  UNIQUE KEY `idx_dependendentId_phonePk` (`dependentId`,`friendPrimaryKeyInYour
Phone`),
  KEY `idx_phonePk` (`friendPrimaryKeyInYourPhone`),
  KEY `idx_dependentId` (`dependentId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

MySQL がどのようにこの DDL を生成し、数秒後にそれが無効であると見なすことができるか考えていますか?

4

2 に答える 2

3

friendPrimaryKeyInYour PhoneエラーメッセージとSQLの両方にスペースがあります。コピー/貼り付け (またはある種の改行) エラーである必要があります。削除してから再試行してください。

于 2009-11-16T23:43:04.950 に答える
2

問題は余分なスペースにあるようです...

ここでMySQLに問題があるかどうかはわかりません。このアーティファクトを作成したのは、テキスト エディタまたはその他のツールでしょうか?

編集: 詳細を調べると、このフィールド名の分割は 79 番目の文字で発生します... 多くのテキスト プレゼンテーション ツールは標準的な幅として 80 を使用していますが、これは問題を確認しているようです。

提案:

  • MySQL のダンプによって生成されたコードそのものを調べてください。「馬の口」から直接、観察のために、16進エディターまたはさまざまなテキストエディターで[保存せずに]開いてください。
  • 実際に余分なスペースがある場合は、そのデータベースの MySQL スキーマを調べて、何らかの奇妙な文字がそこにないかどうかを確認してください....?
  • スクリプトの他の部分を見て、長い行が同様に分割されているかどうかを確認します
于 2009-11-16T23:45:10.817 に答える