2013-04-13 10 views
10
DROP TABLE IF EXISTS `transactions`; 
CREATE TABLE `transactions` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `purchase_date` datetime DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
INSERT INTO `transactions` (`purchase_date`) VALUES (NULL) 

私はこのコードで私の問題を切り離しました。私はそれを実行すると、私はエラーが表示されます:"フィールドリスト 'で未知の列ですが、列は存在します

[ERROR in query 3] Unknown column 'purchase_date' in 'field list'

誰か考えですか?

答えて

15

INSERTステートメントでpurchase_date'の間に挿入された印刷不可能な文字30(RecordSeparator)があります。ただテキスト('purchase_date')を取り除き、それを手で書き直してください。

+0

これは卑劣です。ありがとう。 – Rits

+2

どうやって印刷できない文字があるのですか? –

+2

ちょうどダム運。編集をクリックし、SQLをコピーして、印刷不能を示すエディタに貼り付けます。 – whetstone

3

私はちょうどこれを理解する一日のより良い部分を費やしました。私の問題は同じでした。目に見えない文字がクエリをキボシングし、「未知の列」エラーを返しました。

ノートパッドを使ってWindowsに戻ってゴミを取り除いて解決しました。

どのようにゴミが最初にそこに入るのですか?私は、長い複雑なクエリをphpMyAdminでブックマークしたり、テキストエディタに保存するのではなく、LibreOffice Writer(私の機能仕様書)にコピーして間違えたからだと思います。 LibreOfficeからそれらをクエリーウィンドウに貼り付けると、ガベージがどこから出てきたのか分かります。

そこにいれば、それはマラリアのように持続しました。私は手作業でそれを取り除くことさえできませんでした。質問全体を再入力する必要がありました - 私はNotePad ++(エンコーディングメニュー)にANSIとUTF8のコンボを表示し、手でゴミを取り除かなければなりませんでした。

これが完了すると、クエリが機能しました。

2

これは、テーブル構造を構築するときに列名を貼り付ける場合にも発生します。同じエラーですが、印字不可能/不可視文字はクエリではなくテーブル構造にあります。

0

このエラーが発生したときのニッチな解決策。

、私は NEW.`field_mysql_doesnt_think_exists` で何かをした私のテーブルの上にBEFORE INSERTトリガーを持っていたと私は挿入ステートメントにその場を通過しなかった場合、私はこれは誰を助けないかもしれません

[ERROR in query 3] Unknown column 'field_mysql_doesnt_think_exists' in 'field list'

0

になるだろうこれを「ちょうどよい場合に」追加すると、誰かを助けることになります。

私の状況では、これは別の解決策でした。

Excel CSVファイルとして大きなデータセットを受信し、(.WIL)スクリプトを使用して.csvファイルをインポート可能な.sqlファイルに変換します。私はこれらの2行は同じテーブル名を参照していないことにより、私のスクリプトでエラーが発生しました(私は最初の場所をハードコードされ、これを更新するのを忘れていた):

* "INSERT INTO `old_table_name` (`cid`, `date`, etc etc" 
* "CREATE TABLE IF NOT EXISTS `":_dbName:"` (etc etc " 

は、私はちょうどまた、取得する最初の行を変更しました変数からのテーブル名、そしてvoila!

* "INSERT INTO `":_dbName:"` (`cid`, `date`, etc etc" 

インポートするSQLファイルの2行を確認してください。

関連する問題