Ответы пользователя по тегу MySQL
  • Как подготовить xml для phpmyadmin?

    0neS
    @0neS
    Судя по экспортированной в xml БД PMA не умеет автоматический создавать структуру таблиц из xml.
    Даже если бы это было-бы возможно - гораздо правильнее сделать все самому, расставив нужные типы данных, ключи и проч. Тогда xml выглядел бы вот так:

    <?xml version="1.0" encoding="utf-8"?>
    <pma_xml_export version="1.0" xmlns:pma="http://www.phpmyadmin.net/some_doc_url/">
        <pma:structure_schemas>
            <pma:database name="имя_базы" collation="utf8_general_ci" charset="utf8">
                <pma:table name="ao_door">
                    CREATE TABLE `ao_door` (
                      ...
                    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
                </pma:table>
            </pma:database>
        </pma:structure_schemas>
        <database name="имя_базы">
            <table name="ao_door">
                <column name="parent_group">0</column>
                <column name="name">Валенсия</column>
                <column name="color">Д-17 (Медовый Дуб)</column>
                <column name="price">9842</column>
                <column name="image">139732660635.jpeg</column>
                <column name="canvas_facing">натуральный шпон дуба, двухкомпонентный полиуретановый лак, патина</column>
                <column name="feature">фрезеровка по дереву!</column>
                <column name="skeleton_canvas">брус хвойных пород</column>
                <column name="filling_inside">МДФ</column>
                <column name="width_height">200/60, 70, 80, 90</column>
            </table>
        </database>
    </pma_xml_export>
    Ответ написан
    Комментировать
  • Как повесить на поле значение по умолчанию NULL?

    0neS
    @0neS
    Нужно убрать у поля атрибут NOT NULL.

    Средствами PMA:

    f2d8240b98574cdc95b82bad5f8f5038.png
    (поставить галку там-же, где редактируете структуру таблицы)

    Запросом: ALTER TABLE table MODIFY field datatype NULL;

    P.S. Ответ уже был дан выше, виноват, ретируюсь
    Ответ написан
    Комментировать
  • MYSQL foreign key on delete set NOT NULL (default, 0) - как исправить?

    0neS
    @0neS Автор вопроса
    Схема в итоге получилась следующая (буду рад любым замечаниям):

    CREATE TABLE IF NOT EXISTS user (
    	id int unsigned AUTO_INCREMENT,
    	regdate timestamp,
    	lastvisit timestamp,
    	email varchar(100),
    	password varchar(128),
    	salt varchar(20),
    	status tinyint,
    	level tinyint,
    	balance decimal(10,2),
    	PRIMARY KEY (id),
    	UNIQUE KEY (email)
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS user_profile (
    	id int unsigned AUTO_INCREMENT,
    	uid int unsigned NOT NULL,
    	firstname timestamp,
    	PRIMARY KEY (id),
    	UNIQUE KEY (uid),
    	FOREIGN KEY (uid) REFERENCES user (id) ON DELETE CASCADE
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS user_activation (
    	id int unsigned AUTO_INCREMENT,
    	uid int unsigned NOT NULL,
    	expire timestamp,
    	hash varchar(20),
    	PRIMARY KEY (id),
    	FOREIGN KEY (uid) REFERENCES user (id) ON DELETE CASCADE
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS user_reset (
    	id int unsigned AUTO_INCREMENT,
    	uid int unsigned NOT NULL,
    	expire timestamp,
    	hash varchar(20),
    	PRIMARY KEY (id),
    	FOREIGN KEY (uid) REFERENCES user (id) ON DELETE CASCADE
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS user_session (
    	id int unsigned AUTO_INCREMENT,
    	uid int unsigned NOT NULL,
    	expire timestamp,
    	hash varchar(20),
    	ip varchar(39),
    	agent varchar(200),
    	PRIMARY KEY (id),
    	FOREIGN KEY (uid) REFERENCES user (id) ON DELETE CASCADE
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS product_category (
    	id int unsigned AUTO_INCREMENT,
    	name varchar(100),
    	url varchar(100),
    	PRIMARY KEY (id),
    	UNIQUE KEY (name),
    	UNIQUE KEY (url)
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS product_brand (
    	id int unsigned AUTO_INCREMENT,
    	name varchar(100),
    	url varchar(100),
    	PRIMARY KEY (id),
    	UNIQUE KEY (name),
    	UNIQUE KEY (url)
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS product (
    	id int unsigned AUTO_INCREMENT,
    	created timestamp,
    	edited timestamp,
    	name varchar(100),
    	description text,
    	category_id int unsigned NULL,
    	brand_id int unsigned NULL,
    	url varchar(100),
    	cost decimal(10,2),
    	quantity int unsigned,
    	PRIMARY KEY (id),
    	FOREIGN KEY (category_id) REFERENCES product_category (id) ON DELETE SET NULL,
    	FOREIGN KEY (brand_id) REFERENCES product_brand (id) ON DELETE SET NULL
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS product_photo (
    	id int unsigned AUTO_INCREMENT,
    	product_id int unsigned NOT NULL,
    	url varchar(100),
    	order_id int unsigned,
    	PRIMARY KEY (id),
    	UNIQUE KEY (url),
    	FOREIGN KEY (product_id) REFERENCES product (id) ON DELETE CASCADE
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS product_tag (
    	id int unsigned AUTO_INCREMENT,
    	name varchar(100),
    	PRIMARY KEY (id),
    	UNIQUE KEY (name)
    ) ENGINE=InnoDB;
    
    CREATE TABLE IF NOT EXISTS product_tag_relation (
    	id int unsigned AUTO_INCREMENT,
    	product_id int unsigned NOT NULL,
    	tag_id int unsigned NOT NULL,
    	PRIMARY KEY (id),
    	FOREIGN KEY (product_id) REFERENCES product (id) ON DELETE CASCADE,
    	FOREIGN KEY (tag_id) REFERENCES product_tag (id) ON DELETE CASCADE
    ) ENGINE=InnoDB;
    Ответ написан