Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Secara otomatis klip string dengan panjang yang tepat pada sisipan

Sebenarnya, MySQL memotong string ke lebar kolom secara default. Ini menghasilkan peringatan, tetapi memungkinkan penyisipan.

mysql> create table foo (str varchar(10));
mysql> insert into foo values ('abcdefghijklmnopqrstuvwxyz');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+------------------------------------------+
| Level   | Code | Message                                  |
+---------+------+------------------------------------------+
| Warning | 1265 | Data truncated for column 'str' at row 1 | 
+---------+------+------------------------------------------+
mysql> select * from foo;
+------------+
| str        |
+------------+
| abcdefghij | 
+------------+

Jika Anda menyetel mode SQL yang ketat, ini akan mengubah peringatan menjadi kesalahan dan menolak penyisipan.

Kembali komentar Anda:Mode SQL adalah konfigurasi Server MySQL. Mungkin bukan PDO yang menyebabkannya, tetapi di sisi lain mungkin saja, karena klien mana pun dapat menyetel mode SQL untuk sesinya.

Anda dapat mengambil nilai global atau sesi sql_mode saat ini dengan pernyataan berikut:

SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

Defaultnya harus berupa string kosong (tidak ada mode yang disetel). Anda dapat mengatur mode SQL di my.cnf file, dengan --sql-mode opsi untuk mysqld, atau menggunakan SET pernyataan.

Pembaruan:MySQL 5.7 dan yang lebih baru menetapkan mode ketat secara default. Lihat https://dev.mysql.com/doc/ refman/5.7/en/sql-mode.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kunci asing di MySQL?

  2. Mengakses MySQL dari Python 3:Akses ditolak untuk pengguna

  3. Bagaimana cara memeriksa apakah pengguna sudah ada di MySQL dengan PHP

  4. Tips untuk Migrasi dari HAProxy ke ProxySQL

  5. MySQL pada Benchmark Kinerja Azure – ScaleGrid vs. Database Azure