Ошибка синтаксиса запроса mysql

Ошибка синтаксиса запроса к таблице бд.

def connect():
try:
    connection = pymysql.connect(
        host="localhost",
        port=3306,
        user="root",
        password="soldan1512",
        database="chat_base",
        cursorclass=pymysql.cursors.DictCursor
    )
    print("successfully connected...")
    print("#" * 20)

    try:
        # cursor = connection.cursor()

        with connection.cursor() as cursor:
            create_table_query = "CREATE TABLE IF NOT EXISTS `users_socket`(id INT PRIMARY KEY," \
                                 "login TEXT, " \
                                 "password BLOB," \
                                 "socket VARCHAR," \
                                 "FOREIGN KEY(id) REFERENCES registration_table(id));"
            cursor.execute(create_table_query)

            print("Table created successfully")


    finally:
        connection.close()

except Exception as ex:
    print("Connection refused...")
    print(ex)

Таблица на которую ссылаются также создана. Вот код для нее

def connect():
try:
    connection = pymysql.connect(
        host="localhost",
        port=3306,
        user="root",
        password="soldan1512",
        database="chat_base",
        cursorclass=pymysql.cursors.DictCursor
    )
    print("successfully connected...")
    print("#" * 20)

    try:
        # cursor = connection.cursor()

        with connection.cursor() as cursor:
            create_table_query = "CREATE TABLE IF NOT EXISTS `registration_table`(id INT," \
                                 "login TEXT, " \
                                 "password BLOB," \
                                 "salt BLOB," \
                                 "status TEXT," \
                                 "PRIMARY KEY (id));"
            cursor.execute(create_table_query)

            #drop_table_query = "DROP TABLE `registration_table`;"
            #cursor.execute(drop_table_query)

            print("Table created successfully")



    finally:
        connection.close()

except Exception as ex:
    print("Connection refused...")
    print(ex)

Объясните, что я сделал не так. Ошибка в первой части кода. Вот текст ошибки:

(1064, "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 ',FOREIGN KEY(id) REFERENCES registration_table(id))' at line 1")

Ответы (2 шт):

Автор решения: anar1501

Думаю, нужно в конце точку с запятой удалить "FOREIGN KEY(id) REFERENCES registration_table(id));"

→ Ссылка
Автор решения: Akina

MySQL всегда начинает цитату части запроса в сообщении об ошибке ровно в той точке, в которой обнаруживается проблема. Ни вправо ни влево - а тычут пальцем точно в самую дырочку.

В данном случае цитируется

,FOREIGN KEY(id) REFERENCES registration_table(id))

Добавляем то, что перед:

socket VARCHAR,FOREIGN KEY(id) REFERENCES registration_table(id));

и понимаем, что сервер вместо запятой хотел бы увидеть скобки, внутри которых задаётся размер для типа данных VARCHAR.

→ Ссылка