0

ここ数か月間、CakePHP アプリケーションの開発に取り組んできましたが、ついにインターネット上のテスト サーバー上で稼働させることができました。それを設置してライブにするのはかなり簡単で、ある程度機能します。

サーバーへのデータベース接続があり、アプリはデータベースからデータを取得できます。ただし、一部のページでは、次の行に沿って SQL エラーが返されるようになりました。

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'personel.companyid' in 'where clause'

アプリケーションのエラーかもしれないと思ったので、ローカル コピーを再確認したところ、ローカル コピーは正常に動作しました。次に、テスト サーバーのデータベース スキーマをチェックして、これらのエラーを受け取ったすべてのケースで列が実際に存在するかどうかを確認しました。明らかに不明な列がそこにあり、私のローカル データベースのカーボン コピーが含まれています。

なぜこれが起こっているのか混乱しています。ローカル マシンとテスト サーバーの唯一の違いは、XAMPP セットアップの下で Windows コンピューター上でローカルにサイトを開発し、テスト サーバーが Linux (CentOS) VPS で実行されていることです。

この問題を引き起こしている可能性のあるものは他にありますか?

編集:*
これらは、失敗している 2 つのクエリです。

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'personel.companyid' in 'where clause'

SQL Query: SELECT `Personel`.`id`, `Personel`.`firstname`, `Personel`.`surname`, `Personel`.`email`, `Personel`.`companyid`, `Personel`.`accesslevel`, `Personel`.`poc`, `Personel`.`password`, `Personel`.`telephone`, `Accesslevel`.`id`, `Accesslevel`.`acclevname` FROM `personel` AS `Personel` LEFT JOIN `accesslevels` AS `Accesslevel` ON (`Personel`.`accesslevel` = `Accesslevel`.`id`) WHERE `personel`.`companyid` = 1 

そしてこれ:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'personel.companyid' in 'where clause'

SQL Query: SELECT `Personel`.`id`, `Personel`.`firstname`, `Personel`.`surname`, `Personel`.`email`, `Personel`.`companyid`, `Personel`.`accesslevel`, `Personel`.`poc`, `Personel`.`password`, `Personel`.`telephone`, `Accesslevel`.`id`, `Accesslevel`.`acclevname` FROM `personel` AS `Personel` LEFT JOIN `accesslevels` AS `Accesslevel` ON (`Personel`.`accesslevel` = `Accesslevel`.`id`) WHERE `personel`.`companyid` = 1 
4

1 に答える 1

3

クエリは大文字と小文字が区別されると思います。Personelどこでも大文字を使用してみてください。

http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.htmlを参照してください。最初のパラグラフでは、MySQL が Unix では大文字と小文字を区別し、Windows では区別しないことを説明します。

于 2012-05-14T09:59:45.750 に答える