如果您尝试将一个值插入到VARCHAR中,MySQL中会发生什么;不合适


What happens in MySQL if you try to insert a value into a VARCHAR that can't fit?

我有一个类似的函数

function log_visitor_info ( $ip, $pgurl, $refurl, $aginfo )
{
    global $wpdb, $ipsToIgnore; 
    if (!in_array($ip, $ipsToIgnore)) $wpdb->insert('wp_nas_visits',  array('ip'=>$ip,'refurl'=>$refurl,'pgurl'=>$pgurl,'aginfo'=>$aginfo));
}

它将行插入到我的MySQL数据库中,并想知道如果有一个值太大要输入到列中会发生什么。例如,列aginfo的类型为VARCAHR (250),那么如果字符串$aginfo的长度为251,会发生什么呢?我的网站会崩溃吗?我需要做一些类似的事情来防止这种情况吗

if ( strlen($aginfo) > 250 ) $aginfo = substr($aginfo, 0, 250); 

为了防止这种情况发生?

来自MySQL官方文档(emphasis mine):

如果strictSQL模式未启用,并且您为CHAR或超过列的最大长度的VARCHAR列,值为截断以适应,并生成警告。用于截断非空格字符,则可能导致出现错误(而不是警告),并通过使用严格的SQL模式禁止插入该值
请参阅第5.1.11节"服务器SQL模式"。