1

私はMysql v5.5.14を使用していますが、実行しようとすると:

mysql> CREATE TABLE IF NOT EXISTS LONGBOW_products.universal_partname (
    ->    part_id SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0,
    ->    PRIMARY KEY (part_id)
    -> );

エラーが返されます:

ERROR 1005 (HY000): Can't create table 'LONGBOW_products.universal_partname' (errno: -1)

ただし、テーブル名からアンダースコアを削除しようとすると、true が返されます。

mysql> CREATE TABLE IF NOT EXISTS LONGBOW_products.universal (
    ->    part_id SMALLINT(5) UNSIGNED NOT NULL DEFAULT 0,
    ->    PRIMARY KEY (`part_id`)
    -> );
Query OK, 0 rows affected (0.00 sec)

新しいバージョンの Mysql では、テーブル名にアンダースコアを使用できなくなったのだろうか?

4

2 に答える 2

2

この問題を解決したかどうかはわかりません。非常に単純な CREATE ステートメントで同様の問題が発生しました: エラー コード: 1005. テーブル 'UCQ.country' を作成できません (errno: -1)。

http://dev.mysql.com/doc/refman/5.5/en/innodb-error-codes.htmlによると、「エラー メッセージがエラー –1 を示している場合、テーブルに次の列名が含まれているため、テーブルの作成に失敗した可能性があります。内部 InnoDB テーブルの名前と一致しました。」

ただし、mysql_error_log.err: 21107 18:23:19 InnoDB: Error creating file './ucq/country.ibd' を見たときに問題を解決しました。121107 18:23:19 InnoDB: ファイル操作でのオペレーティング システム エラー番号 17。InnoDB: エラー番号 17 は「ファイルが存在する」ことを意味します。InnoDB: 一部のオペレーティング システムのエラー番号は、InnoDB で説明されて います: http://dev.mysql.com/doc/refman/5.5/en/operating-system-error-codes.html InnoDB ではない: InnoDB データ ディクショナリに存在します。SQL コマンド InnoDB: DISCARD TABLESPACE および IMPORT TABLESPACE を使用せずに InnoDB InnoDB: .ibd ファイルを移動しましたか、それとも InnoDB: mysqld が CREATE TABLE の途中でクラッシュしましたか? InnoDB: ファイル './ucq/country.ibd' を削除して問題を解決することができます InnoDB: '

そのため、country.ibd を削除すると、CREATE ステートメントがスムーズに実行されました。

于 2012-11-07T21:20:48.653 に答える
0

データベース名とテーブル名には“/”, “\”, “.”,、ファイル名で許可されていない文字または文字を含めることはできません。

参照: http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html

削除する "。" テーブル名から

于 2012-04-03T02:29:25.010 に答える