我目前正在将我的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))
我保存了很多用户名,但是那些/或\不断提出这些错误消息。我希望有一种方法可以修复它,而无需编辑包含/或。
的所有名称由于
答案 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