[Ur] "Fatal error: Non-printable character 4294967248 in string to SQLify"

Alexei Golovko m-lj at yandex.ru
Mon Feb 27 09:02:17 EST 2012


27.02.2012, 16:34, "Adam Chlipala" <adamc at impredicative.com>:
> Thus, the question I asked before remains: what is the right way to
> escape UTF-8 strings to use as string literals in MySQL and SQLite?
Hm.
http://sqlite.org/c3ref/exec.html --- "The sqlite3_exec() interface runs zero or more UTF-8 encoded, semicolon-separate SQL statements passed into its 2nd argument";
http://sqlite.org/lang_expr.html --- "A string constant is formed by enclosing the string in single quotes ('). A single quote within the string can be encoded by putting two single quotes in a row - as in Pascal. C-style escapes using the backslash character are not supported because they are not standard SQL."

http://dev.mysql.com/doc/refman/5.0/en/mysql-real-escape-string.html --- "Characters encoded are “\”, “'”, “"”, NUL (ASCII 0), “\n”, “\r”, and Control+Z. Strictly speaking, MySQL requires only that backslash and the quote character used to quote the string in the query be escaped. mysql_real_escape_string() quotes the other characters to make them easier to read in log files."

> P.S.: You have a comment asking:
>      (* Why "task initialize = init" does not work?
>         But this is the second question. *)
> I uncommented the alternate version and it at least type-checked fine.
> What kind of "not working" have you seen?
It is well-typed, but compiler says:
sql_unicode.ur:27:0-27:22: Initializer has not been fully determined



More information about the Ur mailing list