diff -ru activerecord-2.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb activerecord-patched/lib/active_record/connection_adapters/abstract/database_statements.rb
--- activerecord-2.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb	2008-06-16 12:15:34.000000000 +0200
+++ activerecord-patched/lib/active_record/connection_adapters/abstract/database_statements.rb	2008-06-16 12:16:18.000000000 +0200
@@ -106,12 +106,16 @@
       #  SELECT * FROM suppliers LIMIT 10 OFFSET 50
       def add_limit_offset!(sql, options)
         if limit = options[:limit]
-          sql << " LIMIT #{limit}"
+          sql << " LIMIT #{sanitize_limit(limit)}"
           if offset = options[:offset]
-            sql << " OFFSET #{offset}"
+            sql << " OFFSET #{offset.to_i}"
           end
         end
       end
+      
+      def sanitize_limit(limit)
+        limit.to_s[/,/] ? limit.split(',').map{ |i| i.to_i }.join(',') : limit.to_i
+      end
 
       # Appends a locking clause to an SQL statement.
       # This method *modifies* the +sql+ parameter.
diff -ru activerecord-2.0.2/lib/active_record/connection_adapters/mysql_adapter.rb activerecord-patched/lib/active_record/connection_adapters/mysql_adapter.rb
--- activerecord-2.0.2/lib/active_record/connection_adapters/mysql_adapter.rb	2008-06-16 12:15:34.000000000 +0200
+++ activerecord-patched/lib/active_record/connection_adapters/mysql_adapter.rb	2008-06-16 12:16:40.000000000 +0200
@@ -319,9 +319,9 @@
       def add_limit_offset!(sql, options) #:nodoc:
         if limit = options[:limit]
           unless offset = options[:offset]
-            sql << " LIMIT #{limit}"
+            sql << " LIMIT #{sanitize_limit(limit)}"
           else
-            sql << " LIMIT #{offset}, #{limit}"
+            sql << " LIMIT #{offset.to_i}, #{limit.to_i}"
           end
         end
       end
