mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Move all Schema creation into schema.rb for Mysql. Closes #9899 [mikong, lawrence]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7972 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
b1c3fc22c9
commit
210f7e29e2
8 changed files with 231 additions and 283 deletions
|
@ -50,8 +50,6 @@ namespace :mysql do
|
|||
%x( mysqladmin create activerecord_unittest2 )
|
||||
%x( mysql -e "grant all on activerecord_unittest.* to rails@localhost" )
|
||||
%x( mysql -e "grant all on activerecord_unittest2.* to rails@localhost" )
|
||||
%x( mysql activerecord_unittest < #{File.join(SCHEMA_PATH, 'mysql.sql')} )
|
||||
%x( mysql activerecord_unittest2 < #{File.join(SCHEMA_PATH, 'mysql2.sql')} )
|
||||
end
|
||||
|
||||
desc 'Drop the MySQL test databases'
|
||||
|
|
|
@ -23,14 +23,22 @@ class AAACreateTablesTest < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_drop_and_create_courses_table
|
||||
recreate Course, '2' unless use_migrations?
|
||||
if Course.connection.supports_migrations?
|
||||
eval(File.read("#{File.dirname(__FILE__)}/fixtures/db_definitions/schema2.rb"))
|
||||
end
|
||||
recreate Course, '2' unless use_migrations_for_courses?
|
||||
assert true
|
||||
end
|
||||
|
||||
private
|
||||
def use_migrations?
|
||||
coursesSQL = ActiveRecord::Base.connection.adapter_name.downcase + "2.sql"
|
||||
not File.exists? "#{@base_path}/#{coursesSQL}"
|
||||
unittest_sql_filename = ActiveRecord::Base.connection.adapter_name.downcase + ".sql"
|
||||
not File.exists? "#{@base_path}/#{unittest_sql_filename}"
|
||||
end
|
||||
|
||||
def use_migrations_for_courses?
|
||||
unittest2_sql_filename = ActiveRecord::Base.connection.adapter_name.downcase + "2.sql"
|
||||
not File.exists? "#{@base_path}/#{unittest2_sql_filename}"
|
||||
end
|
||||
|
||||
def recreate(base, suffix = nil)
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
DROP TABLE accounts;
|
||||
DROP TABLE funny_jokes;
|
||||
DROP TABLE companies;
|
||||
DROP TABLE topics;
|
||||
DROP TABLE developers;
|
||||
DROP TABLE projects;
|
||||
DROP TABLE developers_projects;
|
||||
DROP TABLE customers;
|
||||
DROP TABLE orders;
|
||||
DROP TABLE movies;
|
||||
DROP TABLE subscribers;
|
||||
DROP TABLE booleantests;
|
||||
DROP TABLE auto_id_tests;
|
||||
DROP TABLE entrants;
|
||||
DROP TABLE colnametests;
|
||||
DROP TABLE mixins;
|
||||
DROP TABLE people;
|
||||
DROP TABLE readers;
|
||||
DROP TABLE binaries;
|
||||
DROP TABLE computers;
|
||||
DROP TABLE tasks;
|
||||
DROP TABLE posts;
|
||||
DROP TABLE comments;
|
||||
DROP TABLE authors;
|
||||
DROP TABLE categories;
|
||||
DROP TABLE categories_posts;
|
||||
DROP TABLE fk_test_has_fk;
|
||||
DROP TABLE fk_test_has_pk;
|
||||
DROP TABLE keyboards;
|
||||
DROP TABLE legacy_things;
|
||||
DROP TABLE numeric_data;
|
||||
DROP TABLE mixed_case_monkeys;
|
||||
DROP TABLE minimalistics;
|
238
activerecord/test/fixtures/db_definitions/mysql.sql
vendored
238
activerecord/test/fixtures/db_definitions/mysql.sql
vendored
|
@ -1,238 +0,0 @@
|
|||
CREATE TABLE `accounts` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`firm_id` int(11) default NULL,
|
||||
`credit_limit` int(5) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `funny_jokes` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`name` varchar(50) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `companies` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`type` varchar(50) default NULL,
|
||||
`ruby_type` varchar(50) default NULL,
|
||||
`firm_id` int(11) default NULL,
|
||||
`name` varchar(50) default NULL,
|
||||
`client_of` int(11) default NULL,
|
||||
`rating` int(11) default NULL default 1,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
|
||||
CREATE TABLE `topics` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`title` varchar(255) default NULL,
|
||||
`author_name` varchar(255) default NULL,
|
||||
`author_email_address` varchar(255) default NULL,
|
||||
`written_on` datetime default NULL,
|
||||
`bonus_time` time default NULL,
|
||||
`last_read` date default NULL,
|
||||
`content` text,
|
||||
`approved` tinyint(1) default 1,
|
||||
`replies_count` int(11) default 0,
|
||||
`parent_id` int(11) default NULL,
|
||||
`type` varchar(50) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE `developers` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`name` varchar(100) default NULL,
|
||||
`salary` int(11) default 70000,
|
||||
`created_at` datetime default NULL,
|
||||
`updated_at` datetime default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `projects` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`name` varchar(100) default NULL,
|
||||
`type` VARCHAR(255) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `developers_projects` (
|
||||
`developer_id` int(11) NOT NULL,
|
||||
`project_id` int(11) NOT NULL,
|
||||
`joined_on` date default NULL,
|
||||
`access_level` smallint default 1
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `orders` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`name` varchar(100) default NULL,
|
||||
`billing_customer_id` int(11) default NULL,
|
||||
`shipping_customer_id` int(11) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `customers` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`name` varchar(100) default NULL,
|
||||
`balance` int(6) default 0,
|
||||
`address_street` varchar(100) default NULL,
|
||||
`address_city` varchar(100) default NULL,
|
||||
`address_country` varchar(100) default NULL,
|
||||
`gps_location` varchar(100) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `movies` (
|
||||
`movieid` int(11) NOT NULL auto_increment,
|
||||
`name` varchar(100) default NULL,
|
||||
PRIMARY KEY (`movieid`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `subscribers` (
|
||||
`nick` varchar(100) NOT NULL,
|
||||
`name` varchar(100) default NULL,
|
||||
PRIMARY KEY (`nick`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `booleantests` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`value` integer default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `auto_id_tests` (
|
||||
`auto_id` int(11) NOT NULL auto_increment,
|
||||
`value` integer default NULL,
|
||||
PRIMARY KEY (`auto_id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `entrants` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
`course_id` INTEGER NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE `colnametests` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`references` int(11) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `mixins` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`parent_id` int(11) default NULL,
|
||||
`pos` int(11) default NULL,
|
||||
`created_at` datetime default NULL,
|
||||
`updated_at` datetime default NULL,
|
||||
`lft` int(11) default NULL,
|
||||
`rgt` int(11) default NULL,
|
||||
`root_id` int(11) default NULL,
|
||||
`type` varchar(40) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `people` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`first_name` VARCHAR(40) NOT NULL,
|
||||
`lock_version` INTEGER NOT NULL DEFAULT 0
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `readers` (
|
||||
`id` int(11) NOT NULL auto_increment PRIMARY KEY,
|
||||
`post_id` INTEGER NOT NULL,
|
||||
`person_id` INTEGER NOT NULL
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `binaries` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`data` mediumblob,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `computers` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`developer` INTEGER NOT NULL,
|
||||
`extendedWarranty` INTEGER NOT NULL
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `posts` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`author_id` INTEGER,
|
||||
`title` VARCHAR(255) NOT NULL,
|
||||
`body` TEXT NOT NULL,
|
||||
`type` VARCHAR(255) default NULL
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `comments` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`post_id` INTEGER NOT NULL,
|
||||
`body` TEXT NOT NULL,
|
||||
`type` VARCHAR(255) default NULL
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `authors` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`name` VARCHAR(255) NOT NULL
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `tasks` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`starting` datetime NOT NULL default '1000-01-01 00:00:00',
|
||||
`ending` datetime NOT NULL default '1000-01-01 00:00:00',
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `categories` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`name` VARCHAR(255) NOT NULL,
|
||||
`type` VARCHAR(255) default NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `categories_posts` (
|
||||
`category_id` int(11) NOT NULL,
|
||||
`post_id` int(11) NOT NULL
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `fk_test_has_pk` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `fk_test_has_fk` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`fk_id` INTEGER NOT NULL,
|
||||
|
||||
FOREIGN KEY (`fk_id`) REFERENCES `fk_test_has_pk`(`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
|
||||
CREATE TABLE `keyboards` (
|
||||
`key_number` int(11) NOT NULL auto_increment primary key,
|
||||
`name` varchar(50) default NULL
|
||||
);
|
||||
|
||||
-- Altered lock_version column name.
|
||||
CREATE TABLE `legacy_things` (
|
||||
`id` int(11) NOT NULL auto_increment,
|
||||
`tps_report_number` int(11) default NULL,
|
||||
`version` int(11) NOT NULL default 0,
|
||||
PRIMARY KEY (`id`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `numeric_data` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY,
|
||||
`bank_balance` decimal(10,2),
|
||||
`big_bank_balance` decimal(15,2),
|
||||
`world_population` decimal(10),
|
||||
`my_house_population` decimal(2),
|
||||
`decimal_number_with_default` decimal(3,2) DEFAULT 2.78
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE mixed_case_monkeys (
|
||||
`monkeyID` int(11) NOT NULL auto_increment,
|
||||
`fleaCount` int(11),
|
||||
PRIMARY KEY (`monkeyID`)
|
||||
) TYPE=InnoDB;
|
||||
|
||||
CREATE TABLE `minimalistics` (
|
||||
`id` INTEGER NOT NULL auto_increment PRIMARY KEY
|
||||
);
|
|
@ -1,2 +0,0 @@
|
|||
DROP TABLE courses;
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
CREATE TABLE `courses` (
|
||||
`id` INTEGER NOT NULL PRIMARY KEY,
|
||||
`name` VARCHAR(255) NOT NULL
|
||||
) TYPE=InnoDB;
|
||||
|
209
activerecord/test/fixtures/db_definitions/schema.rb
vendored
209
activerecord/test/fixtures/db_definitions/schema.rb
vendored
|
@ -1,5 +1,214 @@
|
|||
ActiveRecord::Schema.define do
|
||||
|
||||
# adapter name is checked because we are under a transition of
|
||||
# moving the sql files under activerecord/test/fixtures/db_definitions
|
||||
# to this file, schema.rb.
|
||||
if adapter_name == "MySQL"
|
||||
|
||||
# Please keep these create table statements in alphabetical order
|
||||
# unless the ordering matters. In which case, define them below
|
||||
create_table :accounts, :force => true do |t|
|
||||
t.integer :firm_id
|
||||
t.integer :credit_limit
|
||||
end
|
||||
|
||||
create_table :authors, :force => true do |t|
|
||||
t.string :name, :null => false
|
||||
end
|
||||
|
||||
create_table :auto_id_tests, :force => true, :id => false do |t|
|
||||
t.primary_key :auto_id
|
||||
t.integer :value
|
||||
end
|
||||
|
||||
create_table :binaries, :force => true do |t|
|
||||
t.binary :data
|
||||
end
|
||||
|
||||
create_table :booleantests, :force => true do |t|
|
||||
t.integer :value
|
||||
end
|
||||
|
||||
create_table :categories, :force => true do |t|
|
||||
t.string :name, :null => false
|
||||
t.string :type
|
||||
end
|
||||
|
||||
create_table :categories_posts, :force => true, :id => false do |t|
|
||||
t.integer :category_id, :null => false
|
||||
t.integer :post_id, :null => false
|
||||
end
|
||||
|
||||
create_table :colnametests, :force => true do |t|
|
||||
t.integer :references, :null => false
|
||||
end
|
||||
|
||||
create_table :comments, :force => true do |t|
|
||||
t.integer :post_id, :null => false
|
||||
t.text :body, :null => false
|
||||
t.string :type
|
||||
end
|
||||
|
||||
create_table :companies, :force => true do |t|
|
||||
t.string :type
|
||||
t.string :ruby_type
|
||||
t.integer :firm_id
|
||||
t.string :name
|
||||
t.integer :client_of
|
||||
t.integer :rating, :default => 1
|
||||
end
|
||||
|
||||
create_table :computers, :force => true do |t|
|
||||
t.integer :developer, :null => false
|
||||
t.integer :extendedWarranty, :null => false
|
||||
end
|
||||
|
||||
|
||||
create_table :customers, :force => true do |t|
|
||||
t.string :name
|
||||
t.integer :balance, :default => 0
|
||||
t.string :address_street
|
||||
t.string :address_city
|
||||
t.string :address_country
|
||||
t.string :gps_location
|
||||
end
|
||||
|
||||
create_table :developers, :force => true do |t|
|
||||
t.string :name
|
||||
t.integer :salary, :default => 70000
|
||||
t.datetime :created_at
|
||||
t.datetime :updated_at
|
||||
end
|
||||
|
||||
create_table :developers_projects, :force => true, :id => false do |t|
|
||||
t.integer :developer_id, :null => false
|
||||
t.integer :project_id, :null => false
|
||||
t.date :joined_on
|
||||
t.integer :access_level, :default => 1
|
||||
end
|
||||
|
||||
create_table :entrants, :force => true do |t|
|
||||
t.string :name, :null => false
|
||||
t.integer :course_id, :null => false
|
||||
end
|
||||
|
||||
create_table :funny_jokes, :force => true do |t|
|
||||
t.string :name
|
||||
end
|
||||
|
||||
create_table :keyboards, :force => true, :id => false do |t|
|
||||
t.primary_key :key_number
|
||||
t.string :name
|
||||
end
|
||||
|
||||
create_table :legacy_things, :force => true do |t|
|
||||
t.integer :tps_report_number
|
||||
t.integer :version, :null => false, :default => 0
|
||||
end
|
||||
|
||||
create_table :minimalistics, :force => true do |t|
|
||||
end
|
||||
|
||||
create_table :mixed_case_monkeys, :force => true, :id => false do |t|
|
||||
t.primary_key :monkeyID
|
||||
t.integer :fleaCount
|
||||
end
|
||||
|
||||
create_table :mixins, :force => true do |t|
|
||||
t.integer :parent_id
|
||||
t.integer :pos
|
||||
t.datetime :created_at
|
||||
t.datetime :updated_at
|
||||
t.integer :lft
|
||||
t.integer :rgt
|
||||
t.integer :root_id
|
||||
t.string :type
|
||||
end
|
||||
|
||||
create_table :movies, :force => true, :id => false do |t|
|
||||
t.primary_key :movieid
|
||||
t.string :name
|
||||
end
|
||||
|
||||
create_table :numeric_data, :force => true do |t|
|
||||
t.decimal :bank_balance, :precision => 10, :scale => 2
|
||||
t.decimal :big_bank_balance, :precision => 15, :scale => 2
|
||||
t.decimal :world_population, :precision => 10, :scale => 0
|
||||
t.decimal :my_house_population, :precision => 2, :scale => 0
|
||||
t.decimal :decimal_number_with_default, :precision => 3, :scale => 2, :default => 2.78
|
||||
end
|
||||
|
||||
create_table :orders, :force => true do |t|
|
||||
t.string :name
|
||||
t.integer :billing_customer_id
|
||||
t.integer :shipping_customer_id
|
||||
end
|
||||
|
||||
create_table :people, :force => true do |t|
|
||||
t.string :first_name, :null => false
|
||||
t.integer :lock_version, :null => false, :default => 0
|
||||
end
|
||||
|
||||
create_table :posts, :force => true do |t|
|
||||
t.integer :author_id
|
||||
t.string :title, :null => false
|
||||
t.text :body, :null => false
|
||||
t.string :type
|
||||
end
|
||||
|
||||
create_table :projects, :force => true do |t|
|
||||
t.string :name
|
||||
t.string :type
|
||||
end
|
||||
|
||||
create_table :readers, :force => true do |t|
|
||||
t.integer :post_id, :null => false
|
||||
t.integer :person_id, :null => false
|
||||
end
|
||||
|
||||
create_table :subscribers, :force => true, :id => false do |t|
|
||||
t.string :nick, :null => false
|
||||
t.string :name
|
||||
end
|
||||
add_index :subscribers, :nick, :unique => true
|
||||
|
||||
create_table :tasks, :force => true do |t|
|
||||
t.datetime :starting
|
||||
t.datetime :ending
|
||||
end
|
||||
|
||||
create_table :topics, :force => true do |t|
|
||||
t.string :title
|
||||
t.string :author_name
|
||||
t.string :author_email_address
|
||||
t.datetime :written_on
|
||||
t.time :bonus_time
|
||||
t.date :last_read
|
||||
t.text :content
|
||||
t.boolean :approved, :default => true
|
||||
t.integer :replies_count, :default => 0
|
||||
t.integer :parent_id
|
||||
t.string :type
|
||||
end
|
||||
|
||||
|
||||
|
||||
### These tables are created last as the order is significant
|
||||
|
||||
# fk_test_has_fk should be before fk_test_has_pk
|
||||
create_table :fk_test_has_fk, :force => true do |t|
|
||||
t.integer :fk_id, :null => false
|
||||
end
|
||||
|
||||
create_table :fk_test_has_pk, :force => true do |t|
|
||||
end
|
||||
|
||||
execute 'alter table fk_test_has_fk
|
||||
add FOREIGN KEY (`fk_id`) REFERENCES `fk_test_has_pk`(`id`)'
|
||||
|
||||
|
||||
end
|
||||
|
||||
# For Firebird, set the sequence values 10000 when create_table is called;
|
||||
# this prevents primary key collisions between "normally" created records
|
||||
# and fixture-based (YAML) records.
|
||||
|
|
11
activerecord/test/fixtures/db_definitions/schema2.rb
vendored
Normal file
11
activerecord/test/fixtures/db_definitions/schema2.rb
vendored
Normal file
|
@ -0,0 +1,11 @@
|
|||
ActiveRecord::Schema.define do
|
||||
|
||||
# adapter name is checked because we are under a transition of
|
||||
# moving the sql files under activerecord/test/fixtures/db_definitions
|
||||
# to this file, schema.rb.
|
||||
if adapter_name == "MySQL"
|
||||
Course.connection.create_table :courses, :force => true do |t|
|
||||
t.column :name, :string, :null => false
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue