ホームページ >バックエンド開発 >PHPチュートリアル >mysql がデータを挿入できないのはなぜですか?

mysql がデータを挿入できないのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 14:04:221153ブラウズ

AppServ のインストール後に初めて mysql を使用するとき、「MySql コマンド ライン クライアント」での操作は次のとおりです。
================= ======= ========================================== ======= ============
mysql> データベース car を作成します。
クエリ OK、1 行が影響を受けます (0.00 秒)
mysql>
データベースが変更されました
mysql>テーブル cars(id int, xm char(8),h char(8),vin char(20));
クエリ OK、影響を受ける行は 0 (0.06 秒)

mysql> ,vin)values(1, 'Lian Dongfang','Yu A5F568','LDC666L2980790000');
クエリ OK、1 行が影響を受け、1 つの警告 (0.02 秒)

select * from 車
+--- ----+--- ---+----------+--------+
| | ヴィン |
| ゆう A5F568 | ------+
1 行のセット (0.02 秒)

mysql>
+-----+
| +
1 行のセット (0.00 秒)

mysql> updatecars set xm='Lian' where id=1;
クエリ OK、影響を受ける行 0 件、警告 1 件 (0.01 秒)
一致した行数: 1 変更された行: 0 警告 : 0

xm の値を設定できないのはなぜですか分野?更新できないのはなぜですか?ありがとうございます~~~




ディスカッションに返信 (解決策)

mysql> ected 、 1 warning (0.00 sec)

一致した行: 1 変更: 0 警告: 0
警告 (コード 1366): 不正な文字列value: 'xC1xAExB6xABxB7xBD' for colu

mn 'xm' at row 1

my sql> _



ここでは、挿入されたデータの長さが 6 バイトであることがわかりますが、これは設計された 8 バイトよりも短いのです。 ?




mysql> セット名 utf-8;
エラー 1115 (42000): 不明な文字セット: 'utf'
セット名 utf8;
クエリは成功しました (0.00 秒) mysql> updatecars set xm='Lian' where id=1;
クエリ OK、影響を受ける行 0 件、警告 1 件 (0.00 秒)
一致した行: 1 変更された行: 0 警告: 0

警告 (コード 1366): 文字列値が正しくありません:行 1 の列 'xm' の 'xC1xAE'


mysql> _ _


まだ機能しません、死にそうです ~~~



mysql> 車 (id,xm,h,vin) に挿入します。 1, 'Lian Dongfang','Yu A5F568','LDC666L298079
0000');
クエリ OK、影響を受ける 1 行 (0.00 秒)

select * from 車
+------+-- -- ----+----------+--------+
| -- ----+----------+----------+----------+
河南 A5F568 | |

+-----+----------+----------+-------------- ------+

1 row in set (0.00 sec)


使用しているオペレーティングシステムを教えてください

phpを勉強し始めたばかりですが、設定が面倒なのでappserv-win32-2.6.0で直接インストールします。の実行ファイル。

正しく取り付けられていませんか?

コンピューターには win7 オペレーティング システムがインストールされています~~~

最初に set names gbk; を実行すると問題ありません

情報を確認しました。 set names utf8; を使用すると言われました

ですが、「set names gbk;」は成功しました。

その理由を簡単に説明していただけますか?

#3 が返信した後でのみ #1 の内容を見ました。そうでなければ最初に説明されていたでしょう

xC1xAExB6xABxB7xBD は Lian Dongfang の gbk 内部コードです
しかし、彼はエラーを報告しました。これは、あなたのデフォルト文字を意味しますデータベース セットは latin1 でも gbk でもありません
その場合、中国語に関して報告されるエラーは utf8 のみです (ucs-2 を使用する人はほとんどいません。たとえ使用していても問題ありません)

もちろん、次の場合はエラーが報告されます。 utf8 フィールドに gbk 文字を挿入します
したがって、gbk 文字が現在使用されていることを mysql に通知するには、名前 gbk を設定する必要があります

それでは、なぜ「Yu」はエラーを報告しなかったのでしょうか?
これは utf-8 のエンコード方法によって異なります:
U+007F 0xxxxxxx
U+07FF 110xxxxx 10xxxxxx
U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
U+1FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U+3 FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U+7FFFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

Yu の gbk バイナリ内部コードは 11010100 10100101 です
U+07FF エンコード規則に正確に準拠しているため、エラーは報告されません

辛抱強く答えてくれてありがとう、たくさんのことが得られました〜 ~~

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。