問題タブ [mysql-error-1146]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQLプロシージャのエラーコード
MySQLの手順で小さな問題に直面しています。プロシージャ内にいくつかの例外ハンドラを配置しました。ただし、プロシージャ内で発生する可能性のあるエラーのエラーコードを取得する必要があります。ある種の関数を使用して正確なエラーコードを取得する方法はありますか(同じように、ソケットAPIでWSAGetLastErrorを使用します)?
たとえば、存在しないテーブルを参照するselectクエリがプロシージャ内にあるとします。その場合、エラーが発生します(「テーブル」は存在しません)。コントロールは例外ハンドラーに転送されますが、意味のある情報はありません。この場合(1146)の正確なエラーコードを使用して処理できます。しかし、エラーが例外ハンドラーで言及されていない他の何かである場合はどうなりますか?その場合、後で確認するためにエラーコードを取得します。SHOW ERRORSクエリがありますが、処理手順でどのように使用しますか?これがもっと明確になることを願っています。
ここでも質問が見つかりました: http : //www.eggheadcafe.com/software/aspnet/35923137/show-errors-question.aspxですが、まだ誰も回答していません。
mysql - INSERTクエリの名前が変更されていないMySQLテーブルの名前が変更されましたか?
MySQL 5.1 の MyISAM テーブルの名前を からtest_tablename
に変更した後tablename
、INSERT (または REPLACE) クエリを実行しようとすると、次のメッセージが表示されることがわかりました。
1146: テーブル 'dbname.test_tablename' が存在しません
データベースの抽象化コードをトリプルチェックし、サーバーで直接クエリを実行してこれを確認しました。
MySQL サーバーによると、CREATE TABLE
構文はtablename
期待どおり であり、実行すると、期待どおりSHOW TABLES
にリストtablename
されます。
これが起こる理由はありますか?
さらに重要なことは、テーブルをダンプ、ドロップ、再作成、およびリロードするよりも簡単にこれを修正する方法はありますか?
python - djangoのデフォルトモデル設定の変更
djangoが独自のアプリチュートリアルを作成する(投票を作成する)ことから始めています。既存の独自のデータベースモデルを使用してアプリを作成したいので、少し逸脱しています。
そしてチュートリアルではそれは言う
- テーブル名は、アプリの名前(polls)とモデルの小文字の名前(pollとchoice)を組み合わせることによって自動的に生成されます。(この動作をオーバーライドできます。)
- 主キー(ID)は自動的に追加されます。(これをオーバーライドすることもできます。)
- 慣例により、Djangoは外部キーフィールド名に「_id」を追加します。はい、これを上書きすることもできます。
しかし、この動作をオーバーライドする方法がどこに記載されているのかわかりませんか?モデルをそのように定義しました
今、私がシェルに入るとき、これは私が得るものです
明らかに、実際にはチャネルと呼ばれているため、テーブルtvlistings_channelsを見つけることができません。では、デフォルトを変更するにはどうすればよいですか?
php - PDOクラスの拡張:メソッドがエラーメッセージの代わりに0を返すのはなぜですか?
ここでの投稿をフォローアップすると、pdoクラスを拡張できたようです。
しかし、それは完全には正しくないようです-意図的にクエリを間違えてメソッドをテストしたnum_rows
ので、このメソッドはエラーメッセージを返す可能性があります。
戻るはずです、
SQLSTATE [42S02]:ベーステーブルまたはビューが見つかりません:1146テーブル'xx_2011.table_not_exist'が存在しません
しかし、0
代わりにそれが返されます!なぜ??どうすれば修正できますか?
ありがとう。
mysql - MySQLデータベースの復元
libraryという名前のデータベースのmysqldumpユーティリティを使用して、ab.sqlという名前のファイルを作成しました。それはうまくいきました。今、私はmysqlimportを使用してそれを復元しようとしています。私のデータベースはすでに存在しています。しかし、私はそれをオーバーライドしたいと思います。コマンドを使用しています
コマンドラインで表示されますが、次のようなエラーが発生します。
mysqlimport:エラー:1146、テーブル'library.ab'は存在しません、テーブルを使用する場合:ab
どうしても助けが必要です。
mysql - SQL - AS - テーブルが存在しません - 1146
私のクエリは次のとおりです。
#1146 - テーブル 'databasename.temp' が存在しません
どうすればそれを機能させることができますか?ありがとうございました。
mysql - mysql プロキシ r/w レプリケーションと一時テーブル
MySQL5.1 でマスター/スレーブ レプリケーションを実行しており、mysql プロキシ 0.8.x で r/w 分割を行っています。
一時テーブルを除いて正常に動作します。MySQL は、一時テーブルが存在しないというエラーをスローします。
これは、マスター サーバーのクエリ ログです。
これは、スレーブのクエリ ログです。
これは mysql エラー メッセージです。
マスターに直接クエリを実行すると (php db 接続を mysql-proxy ではなくマスターに変更する)、問題なく動作します。
私はこのmysqlプロキシ設定を使用しています:
それを修正する方法について誰か考えがありますか?助けてくれてありがとう!
// 翌日編集
これが機能しない理由を知っていると思います:
MySQL Proxy は create tmp および insert select ステートメントをマスターに送信し、マスターはコマンドを正しくスレーブにレプリケートし、次のステップで select がスレーブに送信されます。残念ながら、MySQL では、tmp テーブルはそれを発行した接続に対してのみ有効です。したがって、レプリケーションによって作成された tmp テーブルは、スレーブ上の mysql プロキシによって発行された 2 番目の接続に対しては有効ではありません。
私は現在、アプリケーションを変更し、マスターに直接 tmp テーブルを使用して接続を発行することで、これを解決しようとしています。
より良い解決策があると思われる場合はお知らせください。
mysql - データフォルダからmysqlデータベースをロードする方法は?
私はjoomlaWebサイトを作成し、それをリモートホストにエクスポートする準備を始めました。主にリモートサーバーでディレクトリツリーを修正するために作業しています。ただし、phpMyAdminを使用してデータベースをエクスポートする準備をしたとき、データベースはありません。コマンドラインでクエリを実行しようとすると、存在しないかのように「不明なデータベース」エラーが発生します。データベースフォルダはまだ/dataにあるため、削除されませんでした。そのほんの数分前、ウェブサイトは機能していて、データベースはphpMyAdminにリストされていたので、私はこれを本当に理解できません。データベースをインポートして戻す方法はありますか?.frmファイルとdb.outファイルを含むデータベースのフォルダーがあります。これは、MySQLとJoomlaを使い始めてから私が遭遇した最初の異常な問題ではないと言わざるを得ません。基本的に、PCを再起動するたびに MySQLサービスは、私が提供したパスワードを1〜2時間拒否します。パスワードをリセットすることでこれを修正しましたが、その後Webサイトとデータベースは正常に動作していました。ローカルホストでの開発にXAMPPを搭載したWindows7を使用しており、MySQLがサービスとしてインストールされています。Joomlaのバージョンは1.6です。前もって感謝します。
編集 XAMPPをアンインストールして、そのディレクトリ内のすべてを完全に消去してから、再度インストールして、データベースのフォルダを新しいデータディレクトリにコピーしてみました。mysqlワークベンチを使用してmysqlに接続することでデータベースを表示できますが、すべてのテーブルが0 KBサイズとしてリストされ、テーブルを開こうとした場合、またはテーブルを修復しようとした場合、エラー1146(テーブルが存在しません)が発生します。データベース。これは本当にばかげています。
mysql - Doctrine 2の複数のデータベーステーブルにクラステーブル継承(CTI)を実装する
助けが必要ですか?
私には2つのクラスがあります。親クラスはPersonと言い、子はDoctrine2のクラステーブル継承マッピング戦略を使用するEmployeeと言います。クラスの対応するテーブルは、別々のデータベーステーブルに存在します。Personテーブルはデータベースに存在します:dbOneおよびEmployeeテーブルはdbTwoにあります。
クラスは次のようなものです。
と子クラス
Employeeテーブルのスキーマは次のようになります。
実際には2つの問題があります。
- Doctrineはデータベースごとに1つのエンティティマネージャーをマップするので、
$ this-> entityManager-> flush();
Personオブジェクトでは、エラーのフラグが立てられます。
エンティティマネージャ(dbTwoの場合)を呼び出してEmployeeオブジェクトを保存する場合は、その逆になります。テーブルが同じデータベースにある場合、問題は発生しません。この問題を回避するにはどうすればよいですか?また、flush()操作中にエンティティマネージャーが使用するSQLクエリを取得するにはどうすればよいですか?次のように、どのSQLが生成および使用されているかを知っておくと役立ちます。
$this->entityManager->getQuery();
//明らかにこれは私が何を意味するかを説明するためだけのものです
- 2番目の問題は、Doctrineにデータベーステーブルのdiscr列に正しい値を挿入させることです。@DiscriminatorMap詳細セットに従った人物です。これは、値が親インスタンス(つまり、Person)であるが、子インスタンス(つまり、Employee)ではない場合にうまく機能します。助けてくれてありがとう。