2016-06-12 6 views
0

現在、SQLファイルを使用してphpMyAdminのデータベースにテーブルを追加し、データを入力しようとしています。私はこれを成功裏に終わらせましたが、深刻な問題にぶつかりました。私は何を試みても解決策を見つけることができません。以前は、主キータイプとして 'int'を使用しましたが、主キータイプとして 'char'を使用する必要があります。これは問題が発生した場所です。私はオンラインで見て、さまざまな結果を持ついくつかのソリューションを試しました。すべての結果は同等の失敗です。SQL - 'char' auto_incrementの問題

以下の私の元のコードが失敗し、私も解決策をオンラインで探すようになりましたが、役に立たなかったことを示しました。私が試してみて、自分のデータベースにこのファイルをインポートすると

-- 
-- Table structure for table `practice` 
-- 

CREATE TABLE `practice` (
`practice_Id` char(2) NOT NULL auto_increment, 
`Practice_Name` varchar(20) NOT NULL, 
`Practice_Address` varchar(50) NOT NULL, 
PRIMARY KEY (`practice_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; 

-- 
-- Dumping data for table `practice` 
-- 

INSERT INTO `practice` VALUES(P1, 'Practice Head Office', '27, The Hill, Glasgow'); 
INSERT INTO `practice` VALUES(P2, 'Practice Unit 1', 'Unit 1, Houston Estate, Glasgow'); 

私は、次の応答を取得:

#1063 - Incorrect column specifier for column 'practice_Id' 

は今、私はこの非常にサイト上でそれに対する解決策を見つけました。 auto_incrementにunsignedを追加するだけで、auto_incrementがintとfloatで動作するようになります。これをファイルに追加して、もう一度インポートしようとしました。ここでも、これは私に以下のようであってもより多くのエラーを与える失敗しました:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'unsigned auto_increment, 
`Practice_Name` varchar(20) NOT NULL, 
`Practice_Add' at line 6 

を私はAUTO_INCREMENTを残して一人で署名のない試みたが、私は、上記と同様の結果を得ました。

私は本当にこれが不可能と思われるので、助けが必要です。構文エラーがないので理にかなっていません。質問はちょうど尋ねるが、私は上記の試みと私が見つけたすべての解決策を入れた。私はこの問題を持つ他のSQLファイルを持っているので、これは本当に私と私の最後の仕事の大きなハードルです。

+1

charの主キーを持つ必要はありません。あなたは、通常の数値の自動インクリメントプライマリキーを使い続け、別の文字列を「ユニーク」としてマークすることができます。 –

答えて

0

渡すことはできません。自動インクリメントは、数値フィールドでのみ機能します。意味的には、文字列を "インクリメント"する意味がありません。はい、あなたは、単一の文字のための

'x' + 1 = 'y' 

を言うことができるが、どのように文字列をインクリメントしていますか?どのように評価しますか

"Bob" + 3 

たとえば、

+0

私はあなたのポイントを参照してください。私が持っている問題を克服するために私は何をしますか?私は署名されていないauto_incrementを残しているのですか? – DAN212

+0

なぜ 'int'から' char'に切り替えましたか? –

+0

必要なIDは単なる数値ではないためです。今はP1で、01ではない。署名されていないauto_incrementをファイルから削除し、ファイルがデータベースに正常にインポートされました。ありがとう。だからシンプルだけど難しい:)少なくとも私はそれがうまくいくことを願っています。 – DAN212