← Cloudflare Workers / workers / databases / third-party-integrations
PlanetScale
PlanetScale ↗ представляет собой платформу баз данных, которая предоставляет базы данных, совместимые с MySQL, и базы данных PostgreSQL, делая их более масштабируемыми, а управление ими более простым и безопасным.
Чтобы подключиться к PlanetScale с помощью Hyperdrive, выполните следующие шаги:
1. Разрешите доступ к Hyperdrive
Hyperdrive можно подключить к любой существующей MySQL-совместимой базе данных PlanetScale, создав нового пользователя и получив строку подключения к базе данных.
PlanetScale Dashboard
- Перейдите в панель управления PlanetScale ↗ и выберите базу данных, к которой нужно подключиться.
- Нажмите Подключить. Введите
hyperdrive-userв качестве имени пароля (или укажите своё) и настройте разрешения по своему усмотрению. Выберите Создать пароль. Запишите имя пользователя и пароль, так как они больше не будут показаны. - Выберите Прочее в качестве языка или фреймворка. Запишите хост базы данных, имя базы данных, имя пользователя базы данных и пароль. Они понадобятся вам для создания конфигурации базы данных в Hyperdrive.
Имея host, имя базы данных, имя пользователя и пароль, теперь можно создать конфигурацию базы данных Hyperdrive.
2. Создание конфигурации базы данных
Чтобы настроить Hyperdrive, вам потребуется:
- IP-адрес (или имя хоста) и порт вашей базы данных.
- Имя пользователя базы данных (например,
hyperdrive-demo) которую вы настроили на предыдущем шаге. - Пароль, связанный с этим именем пользователя.
- Имя базы данных, к которой должен подключиться Hyperdrive. Например,
mysql.
Hyperdrive принимает комбинацию этих параметров в стандартном формате строки подключения, который используется драйверами баз данных:
mysql://USERNAME:PASSWORD@HOSTNAME_OR_IP_ADDRESS:PORT/database_nameБольшинство провайдеров баз данных предоставляют строку подключения, которую можно скопировать и вставить прямо в Hyperdrive.
Чтобы создать конфигурацию Hyperdrive с помощью Wrangler CLI, откройте терминал и выполните следующую команду.
- Замените <NAME_OF_HYPERDRIVE_CONFIG> на имя вашей конфигурации Hyperdrive и вставьте строку подключения, предоставленную вашим хостом базы данных, или,
- Замените
user,password,HOSTNAME_OR_IP_ADDRESS,port, а такжеdatabase_nameзаполнители значениями, соответствующими вашей базе данных:
npx wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string="mysql://user:password@HOSTNAME_OR_IP_ADDRESS:PORT/database_name"Эта команда выводит привязку для конфигурационный файл Wrangler:
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "hyperdrive-example",
"main": "src/index.ts",
// Set this to today's date
"compatibility_date": "2026-08-28",
"compatibility_flags": [
"nodejs_compat"
],
// Pasted from the output of `wrangler hyperdrive create <NAME_OF_HYPERDRIVE_CONFIG> --connection-string=[...]` above.
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>"
}
]
}"$schema" = "./node_modules/wrangler/config-schema.json"
name = "hyperdrive-example"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"
compatibility_flags = [ "nodejs_compat" ]
[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<ID OF THE CREATED HYPERDRIVE CONFIGURATION>"3. Использование Hyperdrive в вашем Worker
Установите mysql2 ↗ драйвер:
npm i mysql2@>3.13.0Добавьте необходимые флаги совместимости Node.js и привязку Hyperdrive в свой wrangler.jsonc файле:
{
// required for database drivers to function
"compatibility_flags": [
"nodejs_compat"
],
// Set this to today's date
"compatibility_date": "2026-08-28",
"hyperdrive": [
{
"binding": "HYPERDRIVE",
"id": "<your-hyperdrive-id-here>"
}
]
}compatibility_flags = [ "nodejs_compat" ]
# Set this to today's date
compatibility_date = "2026-08-28"
[[hyperdrive]]
binding = "HYPERDRIVE"
id = "<your-hyperdrive-id-here>"Создайте новый connection экземпляр и передайте параметры Hyperdrive:
// mysql2 v3.13.0 or later is required
import { createConnection } from "mysql2/promise";
export default {
async fetch(request, env, ctx): Promise<Response> {
// Create a new connection on each request. Hyperdrive maintains the underlying
// database connection pool, so creating a new connection is fast.
const connection = await createConnection({
host: env.HYPERDRIVE.host,
user: env.HYPERDRIVE.user,
password: env.HYPERDRIVE.password,
database: env.HYPERDRIVE.database,
port: env.HYPERDRIVE.port,
// Required to enable mysql2 compatibility for Workers
disableEval: true,
});
try {
// Sample query
const [results, fields] = await connection.query("SHOW tables;");
// Return result rows as JSON
return Response.json({ results, fields });
} catch (e) {
console.error(e);
return Response.json(
{ error: e instanceof Error ? e.message : e },
{ status: 500 },
);
}
},
} satisfies ExportedHandler<Env>;Следующие шаги
- Подробнее о Как работает Hyperdrive.
- См. руководство по устранению неполадок чтобы отладить типичные проблемы.
- Узнайте больше о других варианты хранения доступен для Cloudflare Workers.
Настройка интеграции с PlanetScale
Чтобы настроить интеграцию с PlanetScale:
-
Для подключения понадобится уже существующая база данных PlanetScale. Создайте базу данных PlanetScale ↗ или импортировать существующую базу данных в PlanetScale ↗.
-
Из раздела веб-консоль PlanetScale ↗, создайте
productsтаблицу следующим запросом:CREATE TABLE products ( id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255) NOT NULL, image_url varchar(255), category_id INT, KEY category_id_idx (category_id) ); -
Добавьте немного данных в только что созданную таблицу. Выполните следующую команду, чтобы добавить в таблицу товар и категорию:
INSERT INTO products (name, image_url, category_id) VALUES ('Ballpoint pen', 'https://example.com/500x500', '1'); -
Настройте учётные данные базы данных PlanetScale в вашем Worker:
Добавьте учётные данные базы данных PlanetScale в качестве секретов вашего Worker. Получить данные для подключения можно в PlanetScale Dashboard ↗ создав строку подключения, а затем добавьте их как секреты с помощью Wrangler:
# Add the database host as a secret npx wrangler secret put DATABASE_HOST # When prompted, paste your PlanetScale host # Add the database username as a secret npx wrangler secret put DATABASE_USERNAME # When prompted, paste your PlanetScale username # Add the database password as a secret npx wrangler secret put DATABASE_PASSWORD # When prompted, paste your PlanetScale password -
В Worker установите
@planetscale/databaseдрайвер для подключения к вашей базе данных PlanetScale и начала работы с данными:npm i @planetscale/database -
Следующий пример показывает, как выполнить запрос к базе данных PlanetScale из Worker. Учётные данные для подключения к PlanetScale добавлены в Worker в качестве секретов.
import { connect } from "@planetscale/database"; export default { async fetch(request, env) { const config = { host: env.DATABASE_HOST, username: env.DATABASE_USERNAME, password: env.DATABASE_PASSWORD, // see https://github.com/cloudflare/workerd/issues/698 fetch: (url, init) => { delete init["cache"]; return fetch(url, init); }, }; const conn = connect(config); const data = await conn.execute("SELECT * FROM products;"); return new Response(JSON.stringify(data.rows), { status: 200, headers: { "Content-Type": "application/json", }, }); }, };
Подробнее о PlanetScale см. в официальная документация PlanetScale ↗.