私はこの質問について調査しましたが、MySQL のマニュアル、MySQL のバグ レポート、スタック オーバーフロー、または他のフォーラムで読んだものは、これまで役に立ちませんでした。
単純な mysql 選択クエリがあります。
SELECT * FROM `Toyota` WHERE `Toyota`.`CollisionEstimatingID` = '22028589';
このクエリは mysql エラー コード 1054 で失敗します
節の列
Toyota.CollisionEstimatingID
が不明ですWHERE
この列は存在します。データベース、テーブル、および列のスペルを少なくとも 30 回チェックしました。データベースを削除して再インポートしました。バッククォートありとバックティックなし、エイリアス ' とエイリアスなし' を試してみました。明示的に名前を付けた table.column 構文で試しました。言及されていますが(列ではなくテーブルのバッククォート、列ではなくテーブル名)、何も機能していないようです。Ubuntu 12.04 で mysql CLI から実行すると失敗し、PHP 5.3 コードから失敗し、phpMyAdmin 内で失敗します。テーブルをひっくり返す準備ができました。
私がこれを試してみると:
SELECT * FROM `Toyota`;
これは問題なく動作しますか?なんてこった、MySQLはとてもからかいです...
から派生したテーブル設定は次のとおりです。show create database Toyota;
CREATE TABLE `Toyota` (
`CollisionEstimatingID` varchar(255) DEFAULT NULL,
`OE_part_number` varchar(255) DEFAULT NULL,
`Price` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
興味深いメモ -- 文字エンコーディングの問題ではないでしょうか? show create table Toyota
「CollisionEstimatingID」以外のすべてを使用して削除し、それを使用して SELECT ステートメントを作成することで、phpMyAdmin で一度だけ動作するようにしました。でも切って貼ってみたらダイスが出ない。
utf8 文字セットを使用してデータベースとテーブルを再作成して、それが役立つかどうかを確認しようとしましたが、役に立ちませんでした。phpMyAdmin ウィンドウからソース コードにテキストをコピーしてみました。列名の先頭にファンキーな文字が生成されました>>?CollisionEstimatingID
。そして逆さまのクエスチョンマーク。
私は困惑しています。自分のプログラミング能力を試して兄弟を助けたい人はいますか?