Rumah Operasi dan penyelenggaraan Docker Menganalisis dan menyelesaikan masalah kod mysql bercelaru dalam docker

Menganalisis dan menyelesaikan masalah kod mysql bercelaru dalam docker

Apr 25, 2023 am 09:19 AM

Docker ialah platform kontena popular yang menjadikan penggunaan dan pengurusan aplikasi lebih mudah dan cekap. Pangkalan data MySQL adalah sebahagian daripada banyak aplikasi. Walau bagaimanapun, apabila menggunakan MySQL dalam Docker, anda kadangkala menghadapi aksara yang bercelaru, yang bukan sahaja menjejaskan ketepatan data, tetapi juga membawa masalah yang tidak perlu kepada pembangun.

Artikel ini akan memperkenalkan masalah rumit MySQL dalam Docker dan kemungkinan penyelesaian.

1. Masalah kod bercelaru MySQL dalam Docker

Kod bercelaru bermakna data yang ditanya pada klien tidak memenuhi jangkaan dan terdapat beberapa aksara atau gelagat yang tidak dapat dikenali.

Masalah ini sangat biasa apabila menjalankan MySQL dalam Docker. Terutama apabila kaedah pengekodan pangkalan data MySQL ditetapkan kepada UTF-8, situasi berikut mungkin berlaku:

1 Apabila memasukkan data, aksara Cina atau bahasa lain yang biasa bagi data menjadi beberapa aksara rawak.

2. Apabila pelanggan menanyakan data, data yang dikembalikan mengandungi sejumlah besar aksara yang bercelaru.

Sebenarnya, masalah ini bukan disebabkan oleh Docker atau MySQL sendiri, tetapi disebabkan beberapa tetapan dan konfigurasi yang salah.

2. Penyelesaian kepada MySQL dalam Docker

1. Semak set aksara sumber data

Punca aksara bercelaru adalah kerana set aksara pangkalan data tidak konsisten dengan set aksara sumber data. Kami perlu mengesahkan sama ada set aksara sumber data ialah UTF-8 untuk memastikan ketepatan penghantaran data antara sistem yang berbeza.

Semak set aksara lalai MySQL dalam MySQL melalui arahan berikut:

show variables like 'character%';
Salin selepas log masuk

set_pelanggan_karakter, set_karakter_sambungan dan set_huruf_hasil dalam hasil yang dipaparkan mestilah utf8mb4. Jika tidak, ia boleh menyebabkan masalah soalan.

Untuk menjalankan MySQL dalam Docker, anda perlu menambah parameter berikut pada fail konfigurasi Dockerfile atau Docker-compose:

...
environment:
  MYSQL_ROOT_PASSWORD: root
  MYSQL_DATABASE: test
  MYSQL_USER: test
  MYSQL_PASSWORD: test
  MYSQL_CHARSET: utf8mb4
  MYSQL_COLLATION: utf8mb4_unicode_ci
...
Salin selepas log masuk

Antaranya, MYSQL_CHARSET dan MYSQL_COLLATION ialah set aksara dan pengisihan kaedah masing-masing.

2. Ubah suai fail konfigurasi MySQL

Apabila menjalankan MySQL dalam Docker, anda juga boleh mengubah suai fail konfigurasi MySQL untuk mencapai set aksara dan kaedah pengisihan yang betul.

Masukkan fail konfigurasi MySQL my.cnf dan tambahkan konfigurasi berikut di bahagian bawah:

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
skip-character-set-client-handshake
Salin selepas log masuk

Untuk menjalankan MySQL dalam Docker, anda perlu menyalin my.cnf ke bekas terlebih dahulu:

...
volumes:
  - ./my.cnf:/etc/mysql/conf.d/my.cnf
...
Salin selepas log masuk

3. Semak set aksara klien MySQL

Apabila menjalankan MySQL dalam Docker, anda perlu memastikan set aksara klien (seperti sistem pengendalian dan alatan klien MySQL , dsb.) juga merupakan UTF-8.

Di Linux, anda boleh melihat set aksara sistem semasa melalui arahan berikut:

$ echo $LANG
Salin selepas log masuk

Jika LANG mengembalikan set aksara lain, anda perlu menambah persekitaran LANG pada shell anda fail konfigurasi Pembolehubah:

$ echo "export LANG='en_US.utf8'" >> ~/.bashrc
Salin selepas log masuk

Dalam sistem Windows, anda perlu memastikan set aksara alat klien (seperti Navicat, dll.) juga adalah UTF-8.

4. Tetapkan atribut lajur MySQL

Dalam MySQL, set aksara dan peraturan penyusunan dalam atribut lajur juga akan mempengaruhi ketepatan hasil pertanyaan. Secara lalai, sifat lajur jadual MySQL baharu menggunakan tetapan lalai pelayan MySQL. Jika set aksara dan pengumpulan pelayan MySQL tidak sepadan, aksara bercelaru mungkin terhasil.

Untuk menyelesaikan masalah ini, anda boleh menetapkan atribut lajur secara manual kepada:

CREATE TABLE test (
  name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
...
);
Salin selepas log masuk

Apabila mencipta jadual, perkara di atas adalah beberapa penyelesaian kepada masalah MySQL yang bercelaru dalam Docker. Pembangun boleh memilih kaedah yang sesuai dengan mereka mengikut keperluan dan keadaan sebenar mereka sendiri. Dalam persekitaran pengeluaran, untuk memastikan kestabilan dan kebolehpercayaan sistem, penggunaan dan konfigurasi aplikasi perlu diuji dan disahkan dengan teliti.

Atas ialah kandungan terperinci Menganalisis dan menyelesaikan masalah kod mysql bercelaru dalam docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimanakah saya menggunakan aplikasi ke kluster Swarm Docker? Bagaimanakah saya menggunakan aplikasi ke kluster Swarm Docker? Mar 17, 2025 pm 04:20 PM

Butiran artikel yang menggerakkan aplikasi ke docker swarm, meliputi penyediaan, langkah penempatan, dan langkah -langkah keselamatan semasa proses.

Apakah pod, penyebaran, dan perkhidmatan Kubernetes? Apakah pod, penyebaran, dan perkhidmatan Kubernetes? Mar 17, 2025 pm 04:25 PM

Artikel ini menerangkan pod, penyebaran, dan perkhidmatan Kubernetes, memperincikan peranan mereka dalam menguruskan aplikasi kontena. Ia membincangkan bagaimana komponen ini meningkatkan skalabiliti, kestabilan, dan komunikasi dalam aplikasi. (159 aksara)

Bagaimanakah saya membuat skala aplikasi di Kubernet? Bagaimanakah saya membuat skala aplikasi di Kubernet? Mar 17, 2025 pm 04:28 PM

Artikel ini membincangkan aplikasi penskalaan di Kubernet menggunakan skala manual, HPA, VPA, dan AutoScaler kluster, dan menyediakan amalan dan alat terbaik untuk pemantauan dan mengautomasikan skala.

Bagaimana saya melaksanakan kemas kini rolling di Swarm Docker? Bagaimana saya melaksanakan kemas kini rolling di Swarm Docker? Mar 17, 2025 pm 04:23 PM

Artikel ini membincangkan pelaksanaan kemas kini rolling di Swarm Docker untuk mengemas kini perkhidmatan tanpa downtime. Ia meliputi perkhidmatan mengemas kini, menetapkan parameter kemas kini, memantau kemajuan, dan memastikan kemas kini yang lancar.

Bagaimana saya menguruskan perkhidmatan di Swarm Docker? Bagaimana saya menguruskan perkhidmatan di Swarm Docker? Mar 17, 2025 pm 04:22 PM

Artikel membincangkan pengurusan perkhidmatan dalam Swarm Docker, memberi tumpuan kepada penciptaan, skala, pemantauan, dan mengemas kini tanpa downtime.

Bagaimana saya menguruskan penyebaran di Kubernet? Bagaimana saya menguruskan penyebaran di Kubernet? Mar 17, 2025 pm 04:27 PM

Artikel ini membincangkan pengurusan penyebaran Kubernet, memberi tumpuan kepada penciptaan, kemas kini, skala, pemantauan, dan automasi menggunakan pelbagai alat dan amalan terbaik.

Bagaimana saya membuat kelompok docker swarm? Bagaimana saya membuat kelompok docker swarm? Mar 17, 2025 pm 04:19 PM

Artikel membincangkan membuat dan menguruskan kluster docker swarm, termasuk persediaan, perkhidmatan skala, dan amalan terbaik keselamatan.

Soalan Temuduga Docker: Ace Wawancara Kejuruteraan DevOps Anda Soalan Temuduga Docker: Ace Wawancara Kejuruteraan DevOps Anda Apr 06, 2025 am 12:01 AM

Docker adalah kemahiran yang mesti ada untuk jurutera DevOps. 1.Docker adalah platform kontena sumber terbuka yang mencapai pengasingan dan mudah alih dengan aplikasi pembungkusan dan kebergantungan mereka ke dalam bekas. 2. Docker bekerja dengan ruang nama, kumpulan kawalan dan sistem fail bersekutu. 3. Penggunaan asas termasuk mencipta, menjalankan dan menguruskan bekas. 4. Penggunaan lanjutan termasuk menggunakan DockerCompose untuk menguruskan aplikasi multi-kontainer. 5. Kesilapan umum termasuk kegagalan kontena, masalah pemetaan pelabuhan, dan masalah ketekunan data. Kemahiran penyahpepijatan termasuk log melihat, memasukkan bekas, dan melihat maklumat terperinci. 6. Pengoptimuman prestasi dan amalan terbaik termasuk pengoptimuman imej, kekangan sumber, pengoptimuman rangkaian dan amalan terbaik untuk menggunakan Dockerfile.

See all articles