Sisipan Integer Salah MySQL: Kes 2147483647
Memasukkan data ke dalam MySQL kadangkala boleh membawa kepada tingkah laku yang tidak dijangka, terutamanya apabila berurusan dengan nilai integer . Satu isu yang membingungkan itu timbul apabila memasukkan integer 2147483647, yang boleh menyebabkan nilai yang berbeza disimpan dalam pangkalan data daripada yang dimaksudkan.
Untuk memahami sebab ini berlaku, adalah penting untuk memahami konsep had saiz integer dalam MySQL . Secara lalai, MySQL menggunakan jenis data 'int', yang mempunyai nilai maksimum 2147483647. Ini bermakna nilai integer yang lebih besar daripada ambang ini tidak boleh disimpan dengan tepat dalam lajur 'int'.
Dalam coretan kod yang disediakan , pembolehubah '$steam64' berkemungkinan menyimpan ID pengguna Steam Web API, yang boleh menjadi nilai angka yang besar. Apabila nilai ini dimasukkan ke dalam lajur yang ditakrifkan sebagai 'int', MySQL cuba memaksanya dalam julat integer maksimum, mengakibatkan nilai yang tidak betul yang dinyatakan di atas.
Penyelesaian kepada masalah ini terletak pada menukar jenis data lajur kepada 'bigint'. Integer yang besar boleh menyimpan nilai yang jauh lebih besar daripada 'int', membolehkan penyimpanan nilai yang tepat seperti 2147483647 tanpa sebarang pemotongan atau herotan.
Untuk mengubah suai jenis data dalam MySQL, hanya laksanakan pertanyaan berikut:
ALTER TABLE users_info MODIFY COLUMN steam64 BIGINT;
Pengubahsuaian ini akan membolehkan MySQL mengendalikan nilai integer yang besar seperti $steam64 dengan betul, memastikan data yang dimasukkan ke dalam pangkalan data menggambarkan nilai yang disimpan dalam skrip dengan tepat.
Atas ialah kandungan terperinci Mengapa MySQL Store 2147483647 Salah, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!