MySQL“旧版语法”

时间:2015-07-06 21:59:49

标签: mysql sqlite

我目前正在将我的SQLite数据库移植到MySQL,只是创建了一个脚本来将所有INSERT更改为MySQL,但有时会出现“旧版本语法错误”:

INSERT INTO players(id, name) VALUES (21457, '/Gohst_Killer67\');

数据库结构:

CREATE TABLE IF NOT EXISTS players (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(40))

我保存了很多用户名,但是那些/或\不断提出这些错误消息。我希望有一种方法可以修复它,而无需编辑包含/或。

的所有名称

由于

1 个答案:

答案 0 :(得分:1)

在mysql中的方式是 -

Hitesh> CREATE TABLE IF NOT EXISTS players (id INTEGER PRIMARY KEY AUTO_INCREMENT, name VARCHAR(40));
Query OK, 0 rows affected (0.21 sec)

Hitesh> INSERT INTO players(id, name) VALUES (21457, '/Gohst_Killer67\'');
Query OK, 1 row affected (0.04 sec)

对于特殊字符,你应该在它之前使用\。就像我在插入中使用\'一样。

您可以通过在SQL模式下设置NO_BACKSLASH_ESCAPES来禁用反斜杠转义:

SET @old_sql_mode=@@sql_mode;
SET @@sql_mode=CONCAT_WS(',', @@sql_mode, 'NO_BACKSLASH_ESCAPES');
Hitesh> INSERT INTO players(id, name) VALUES (21457,   "/Gohst_Killer67'");
Query OK, 1 row affected (0.04 sec)

对于插入单引号,您可以将字符串放入""插入或反之亦然,就像我做的那样。另外,你可以使用引用函数quote