【问题标题】:Mysql - cannot insert a column name conatining colons to a tableMysql - 无法将包含冒号的列名插入到表中
【发布时间】:2020-07-31 13:35:16
【问题描述】:

我正在使用 python 开发一个简单的聊天应用程序项目。为了保存每个客户端的数据,我使用了一个MySql数据库。当新成员注册时,会在数据库中的一个表中添加一列。一切正常。我决定支持包含表情符号的用户名。我认为将表情符号转换为字符串会很有用。为此,我使用了 demojize() 函数:

client_name = qwer????
name2save = emoji.demojize(client_name)
# name2save = qwer:winking_face_with_tongue:

然后,为了将列添加到我的表中,我使用以下 SQL qwery:

"ALTER TABLE private_chats ADD COLUMN '" + emoji.demojize(name2save) + "' TEXT(6000)"

当我运行 qwery 时,出现以下错误:

mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''qwer:winking_face_with_tongue:' TEXT(6000)' at line 1

我认为问题在于该用户名中的冒号。 我的问题是我应该如何将包含冒号或任何其他保留字符的列名添加到 MySql 表中?

【问题讨论】:

  • 表情符号 ???? 转换为 qwer:winking_face_with_tongue:,因此您的 sql 查询将是 ADD COLUMN 'qwer:winking_face_with_tongue:' TEXT(6000),这不是有效的列名。无论如何 - 为每个注册到您的系统的用户添加一个新列确实不是一个好方法。您应该有一个 users 表,其中包含 id | username 列(可能更多),并且在 private_chats 内部 - 有一个 user_id 列,并且只需将相关用户的 ID 保存在里面。
  • @Dekel 感谢您的建议!我会用它:)

标签: python mysql emoji reserved-words


【解决方案1】:

我不确定,但你不能使用单引号

'

用于列标识符但反引号

`

改为。

【讨论】:

  • 是的 - 从单引号切换到反引号对我有用。
猜你喜欢
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 2016-12-22
  • 2023-04-03
  • 2018-07-08
  • 2023-01-31
  • 2018-04-05
  • 2017-09-19
相关资源
最近更新 更多