diff --git a/modules/statistics/statistics.module b/modules/statistics/statistics.module
index 0ba9d7f..8f639b0 100644
--- a/modules/statistics/statistics.module
+++ b/modules/statistics/statistics.module
@@ -79,7 +79,7 @@ function statistics_exit() {
     db_insert('accesslog')
       ->fields(array(
         'title' => strip_tags(drupal_get_title()),
-        'path' => $_GET['q'],
+        'path' => substr($_GET['q'], 0, 255),
         'url' => isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '',
         'hostname' => ip_address(),
         'uid' => $user->uid,
diff --git a/modules/statistics/statistics.test b/modules/statistics/statistics.test
index 126828f..cd70588 100644
--- a/modules/statistics/statistics.test
+++ b/modules/statistics/statistics.test
@@ -116,6 +116,15 @@ class StatisticsLoggingTestCase extends DrupalWebTestCase {
     $this->assertEqual(array_intersect_key($log[5], $expected), $expected);
     $node_counter = statistics_get($this->node->nid);
     $this->assertIdentical($node_counter['totalcount'], '3');
+
+    // Create a path longer than 255.
+    $big_path = $this->randomString(256);
+
+    // Test logging the big path truncated.
+    $this->drupalGet($big_path);
+    $log = db_query('SELECT * FROM {accesslog}')->fetchAll(PDO::FETCH_ASSOC);
+    $this->assertTrue(is_array($log) && count($log) == 7, t('Page request was logged.'));
+    $this->assertEqual($log[6]['path'], substr($big_path, 0, 255));
   }
 }
 
