1. ホーム
  2. Mysql

Mysqlの使用中に発生したエラーの一部

2022-02-24 05:49:23

エラー 1114

ERROR: 1114, テーブル 'XXXXXXXX' は満杯です。

  1. 古いバージョンの innodb_data_file_path = ibdata1:10M:autoextend:max:128M 設定を innodb_data_file_path = ibdata1:10M:autoextend に変更しました。
  2. データベースがあるディスクを確認してください。おそらくディスクがいっぱいになっています。

エラー1041

[mysqld または他のプロセスが利用可能なメモリをすべて使用しているかどうかを確認します。そうでない場合は、ulimit を使用して mysqld がさらにメモリを使用できるようにするか、スワップ領域を追加する必要があるかもしれません。

エラー1146

[Err] 1146 - テーブル 'h2.cm_customerinfo' が存在しません。

テーブルが存在しない

エラー1054

[Err] 1054 - 'フィールドリスト'の 'DescribeInfo'カラムが不明です。

フィールド名が間違っている

追加されたフィールドには、キーワードと `` 記号を加えてはいけないことに注意してください。

エラー1063

#1063 - 列 'xxx' の列指定子が正しくないエラー。

たとえば、主キーがセルフインクリメントで、フィールドタイプが char などの場合、セルフインクリメントにはできないので、このようなプロンプトが表示されます。

エラー1064

シンタックスエラー

エラー 1093

エラー 1093 (HY000)。FROM 句で更新対象のテーブル 'TEST' を指定できません。

この例外は、更新にサブクエリが含まれている場合に発生します。

update TEST_NOIDX set CREATETIME=now() where ID in ( select a.ID from TEST_NOIDX a where a.VNAME='Aa');

この方法では、Mysqlはサブクエリをひどく処理するため、間違いなく動作しません。回避策 <スパン 1 サブクエリの外側に1レベル入れ子、内側joinを使用して2

update TEST_NOIDX set CREATETIME = now() where ID in (select id from ( select id from TEST_NOIDX where VNAME = 'Aa') aa)。

update TEST_NOIDX b inner join ( select a.ID,a.CREATETIME from TEST_NOIDX a where a.VNAME='Aa') c on b.ID=c.ID set b.CREATETIME=now().CREATETIME=now();

エラー1136

[SQL] `user` に VALUES ('c','),('d',NULL) を挿入してください。

[Err] 1136 - 列数が行 1 の値数と一致しません。

列数が1行目の値数と一致しません。

もし(フィールド1,フィールド2)後の構文テーブルがデフォルトで利用できない場合は、デフォルトでは、完全なフィールドは、ないときに割り当ての後に整列されていません。さらに、書かれたフィールドのフロント、フィールドの割り当ての欠如のバック、またはフィールドの欠如のフロント、よりフィールド割り当てのバックは、この問題からになります。

例: `user` テーブルのフィールドには `id`, `name`, `address` があります。

insert into `user`[no field parameter defaults to all] VALUES ('c',''),('d',NULL); error

insert into `user`(`name`) VALUES ('c','),('d',NULL); error

insert into `user`(`name`,`address`) VALUES ('c'),('d'); error

insert into `user`(`name`,`address`) VALUES ('c','),('d',NULL); Correct

1175エラー

セーフ アップデート モードを使用しているときに、KEY 列を使用する WHERE のないテーブルを更新しようとしました。

環境設定 - SQL Editor でオプションを切り替えてから再接続してください。

解決方法

これは、MySql が safe-updates モードで動作しており、プライマリキー以外の条件で update または delete コマンドが実行されないようにするためです。

コマンドSETを実行する sql_safe_updates = 0; データベーススキーマを変更する

エラー1226

[Err] 1226 - ユーザー 'cmh' が 'max_questions' リソースを超えました (現在の値: 40)

Err 1227

[Err] 1227 - アクセスが拒否されました。この操作には、SUPER または SYSTEM_VARIABLES_ADMIN 特権が(少なくとも1つ)必要です。

[この操作には、SUPER または SYSTEM_VARIABLES_ADMIN 特権が必要です。

Err 1232 - 変数 'XXXXXXXXX' への引数の型が正しくありません。

グローバルなtmp_table_size=64Mを設定します。

変数を動的に設定する場合、単に単位を付けて書くだけでなく、変数を

グローバルtmp_table_size=64*1024*1024を設定します。

tmp_table_size」のようなグローバルなVARIABLEを表示します。

1238エラー

静的なパラメータを動的に設定する

グローバルなdatadir='/db/mysql'を設定します。

[Err] 1238 - 変数 'datadir' は読み取り専用変数です。

Err 1264 - 1行目の列 'c1' の値が範囲外です。

列の範囲外の値(例:浮動小数点固定小数点整数

Err 1292 - 不正なDOUBLE値が切り捨てられました:'/Department/Index'

update sys_stationpower Set PageUrl='/Admin'+PageUrl where PageUrl!='-';

MSSQLでおなじみの"+"の代わりに、SQL文の文字列をスプライスする際にmysql独自の文字スプライス関数concat(str1,str2,...)を使用します。

update sys_stationpower Set PageUrl=CONCAT('/Admin',PageUrl) where PageUrl!='-';

Err 1418 (HY000)。この関数は、宣言に DETERMINISTIC、NO SQL、または READS SQL DATA のいずれかを持たず、バイナリログが有効になっています。

この関数は、宣言に DETERMINISTIC、NO SQL、READS SQL DATA のいずれも含まず、バイナリログが有効です。

分析する。

CREATE PROCEDURE, CREATE FUNCTION, ALTER PROCEDURE,ALTER FUNCTION,CALL, DROP PROCEDURE, DROP FUNCTION文はバイナリログに書き込まれ、スレーブサーバで実行されるからです。しかし、更新を行う不確定なサブルーチン(プロシージャ、関数、トリガ)は繰り返し実行できないため、(繰り返し実行するマスターサーバーとは異なり)スレーブサーバーで実行すると、復元したデータが元のデータと異なったり、スレーブサーバーがマスターサーバーと異なったりすることがあります。

<スパン この問題を解決するために、MySQLは強制的に
マスターサーバーでは、サブルーチンが決定論的であると宣言されているか、データを変更しない限り、サブルーチンの作成または置換は拒否されます。
つまり、サブルーチンを作成する際には、決定論的であることを宣言するか、データを変更しないかのどちらかでなければなりません。

を宣言する方法は2つあります。
1つ目:決定論的かどうかを宣言する
DETERMINISTICとNOT DETERMINISTICは、あるサブルーチンが与えられた入力に対して常に同じ結果を生成するかどうかを示します。
どちらの機能も指定されていない場合、デフォルトはNOT DETERMINISTICです。従って、サブルーチンを決定論的であると宣言するには、DETERMINISTICを明示的に指定する必要があります。 
NOW()関数(またはその同義語)やRAND()関数を使用しても、サブルーチンが非決定的になるわけではありませんので、ご注意ください。NOW()の場合、バイナリログにタイムスタンプが含まれ、正しく実行されます。RAND()もサブルーチン内で一度だけ呼ばれれば、正しくコピーされます。つまり、www.linuxidc.com可以认为时间戳和随机数种子是子程序的确定性输入、マスターサーバーとスレーブサーバーで同じになります。

2つ目:データを変更するかどうかの宣言  
CONTAINS SQL, NO SQL, READS SQL DATA, MODIFIES SQL は、サブルーチンがデータを読み込むか書き込むかを示すために使用されます。
NO SQLまたはREADS SQL DATAのどちらかは、サブルーチンがデータを変更しないことを示しますが、いずれかを指定すると、デフォルトの指定がCONTAINS SQLになるため、明示的に指定する必要があります。

デフォルトでは、CREATE PROCEDUREまたはCREATE FUNCTION文の受理が許可されている場合、DETERMINISTICまたはNO SQLとREADS SQL DATAのいずれかが明示的に指定されていなければならず、そうでなければ1418エラーが生成されます。

Err 1451 -親行を削除または更新できません: 外部キー制約に失敗しました (...)

FOREIGN_KEY_CHECKS を使用して外部キー制約を有効化および無効化する方法

MySQL でテーブルやデータの一部を削除する場合、そのテーブルやデータの一部は

[Err] 1451 -親行を削除または更新できません: 外部キー制約に失敗しました (...)

これは、MySQLで外部キーの関連付けが設定されているため、データの更新や削除ができない状態になっているためです。 これは、FOREIGN_KEY_CHECKS変数を設定することで回避することができます。

Err 1052 - groupステートメントの列 'UserID' はあいまいです。

ほとんどの場合、両方のテーブルが同じフィールドを持つ連結クエリで発生し、エイリアス/テーブル名を追加する必要があります Alias [table name]. フィールド

Err 1701 制約付きテーブルの切り捨て

外部キー制約で参照されているテーブルを切り詰めることはできません (`kunming_data`. en_answer`, CONSTRAINT `en_answer_ibfk_1` FOREIGN KEY (`QuestionsID`) REFERENCES `kunming_data`.ANSWER`, CONSTRAINT `en_answer_ibfk_1` REFERENCES `kunming_data`.ANSWER`. en_questions` (`ID`)) を参照してください。

この問題は、Err1451と同じように処理されます。

1行の長さの誤差

MYSQLでは、文字セットgbkで1文字2バイト、utf8で1文字3バイトとして、行の定義長さが65635を超えないように規定しています。

テーブルとして

Id intです。

ユーザー名 varchar(20)。

電話番号 bigint,

住所(n)

gbkの場合、idは4バイト、usernameは41バイト(gbkでは1文字2バイト、20*2=40、長さ255未満は1バイトとして格納される)。

電話は8バイト、アドレス(gbkでの長さは255を超えるので、長さの値を2バイトとして格納する)。

計算結果 (65535-4-41-8-2)/2 = 32740 nは最長で32740にしかならない。

また、utf8では、(65535-4-61-8-2)/3=21820 nは最長で21820にしかならない。

Err MySQLの日付/時刻値をSystemに変換することができません。

C#への読み込みエラー、DateTimeの範囲は1000-9999、データベースは0216-12-25、間違った年、典型的な時間範囲エラーが表示されます。2016に変更すると正常に動作します。

Err Mysql8.0.11 caching_sha2_password can not log in.

mysql8.0.11 のデフォルトの暗号化方式 [caching_sha2_password] は Navicat for MySQL および Navicat Premium 12 と Mysql Workbench クライアントでサポートされていないためです。

で暗号化を変更します。

alter user 'cmhdl521'@'%' identified with mysql_native_password by 'genie810304~! _+';

一般的なクライアントソフトウェアは、ログインすることができ、その後、WEB、リフレッシュして、まだこのエラーcaching_sha2_passwordです。

Ini.

# サーバーへの接続時に使用されるデフォルトの認証プラグイン

サーバーへの接続時に使用されるデフォルトの認証プラグイン

[mysqld] です。

default_authentication_plugin=caching_sha2_password

に変更します。

[mysqld] です。

default_authentication_plugin=mysql_native_password。

その後、通常通り

定義子として指定されたユーザー('sa'@'%')が存在しません。

これは通常、データベースを移行した後に発生する問題です。

定義子として指定されたユーザー('sa'@'%')が存在しません。

mysqlプロシージャの定義者を表示するには、所有するロールの名前を変更する必要があります。

指定された値は、有効な定数型のインスタンスではありません。

指定された値は、有効な定数型のインスタンスではありません。

エントリーの更新中にエラーが発生しました。詳細は内部例外を参照してください。

指定された値は有効な定数型のインスタンスではありません。

エントリーの更新中にエラーが発生しました。詳細は内部例外を参照してください。

EF と MYSQL のサポートはまだ不完全で、EF エンティティセットは unsigned とマークされたフィールドをサポートせず、mysql の値が次のように設定された場合に不正なマッピングを生成します。 無記名 を使用すると、EFの追加や変更に失敗します。

Err プロバイダが ProviderManifestToken 文字列を返しませんでした。

Mysql にリンクしている EF の接続文字列が正しくなく、データベースにアクセスできない。